Commit cccff71a by H.J. Lu Committed by H.J. Lu

Pass pointers in word_mode instead of Pmode

2012-03-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (function_value_64): Return pointers in
	word_mode instead of Pmode.
	(ix86_promote_function_mode): Likewise.

From-SVN: r185057
parent 6eddd7b4
2012-03-07 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (function_value_64): Return pointers in
word_mode instead of Pmode.
(ix86_promote_function_mode): Likewise.
2012-03-07 Richard Guenther <rguenther@suse.de> 2012-03-07 Richard Guenther <rguenther@suse.de>
* coverage.c (get_gcov_type): Use type_for_mode. * coverage.c (get_gcov_type): Use type_for_mode.
......
...@@ -7240,8 +7240,8 @@ function_value_64 (enum machine_mode orig_mode, enum machine_mode mode, ...@@ -7240,8 +7240,8 @@ function_value_64 (enum machine_mode orig_mode, enum machine_mode mode,
} }
else if (POINTER_TYPE_P (valtype)) else if (POINTER_TYPE_P (valtype))
{ {
/* Pointers are always returned in Pmode. */ /* Pointers are always returned in word_mode. */
mode = Pmode; mode = word_mode;
} }
ret = construct_container (mode, orig_mode, valtype, 1, ret = construct_container (mode, orig_mode, valtype, 1,
...@@ -7312,7 +7312,8 @@ ix86_function_value (const_tree valtype, const_tree fntype_or_decl, ...@@ -7312,7 +7312,8 @@ ix86_function_value (const_tree valtype, const_tree fntype_or_decl,
return ix86_function_value_1 (valtype, fntype_or_decl, orig_mode, mode); return ix86_function_value_1 (valtype, fntype_or_decl, orig_mode, mode);
} }
/* Pointer function arguments and return values are promoted to Pmode. */ /* Pointer function arguments and return values are promoted to
word_mode. */
static enum machine_mode static enum machine_mode
ix86_promote_function_mode (const_tree type, enum machine_mode mode, ix86_promote_function_mode (const_tree type, enum machine_mode mode,
...@@ -7322,7 +7323,7 @@ ix86_promote_function_mode (const_tree type, enum machine_mode mode, ...@@ -7322,7 +7323,7 @@ ix86_promote_function_mode (const_tree type, enum machine_mode mode,
if (type != NULL_TREE && POINTER_TYPE_P (type)) if (type != NULL_TREE && POINTER_TYPE_P (type))
{ {
*punsignedp = POINTERS_EXTEND_UNSIGNED; *punsignedp = POINTERS_EXTEND_UNSIGNED;
return Pmode; return word_mode;
} }
return default_promote_function_mode (type, mode, punsignedp, fntype, return default_promote_function_mode (type, mode, punsignedp, fntype,
for_return); for_return);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment