diff mbox

PATCH: Pass and return pointers in word_mode

Message ID 20120306224559.GA21616@intel.com
State New
Headers show

Commit Message

H.J. Lu March 6, 2012, 10:45 p.m. UTC
Pmode may not be word_mode for TARGET_64BIT.  This patch changes to
word_mode instead of Pmode.  OK for trunk?

Thanks.


H.J.
2012-03-02  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.

Comments

Uros Bizjak March 7, 2012, 7:46 a.m. UTC | #1
On Tue, Mar 6, 2012 at 11:45 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> Pmode may not be word_mode for TARGET_64BIT.  This patch changes to
> word_mode instead of Pmode.  OK for trunk?

> 2012-03-02  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.

OK.

Thanks,
Uros.
diff mbox

Patch

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 65c4c42..ac9c714 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -7240,8 +7240,8 @@  function_value_64 (enum machine_mode orig_mode, enum machine_mode mode,
     }
   else if (POINTER_TYPE_P (valtype))
     {
-      /* Pointers are always returned in Pmode. */
-      mode = Pmode;
+      /* Pointers are always returned in word_mode.  */
+      mode = word_mode;
     }
 
   ret = construct_container (mode, orig_mode, valtype, 1,
@@ -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);
 }
 
-/* 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
 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))
     {
       *punsignedp = POINTERS_EXTEND_UNSIGNED;
-      return Pmode;
+      return word_mode;
     }
   return default_promote_function_mode (type, mode, punsignedp, fntype,
 					for_return);