Pass pointers in word_mode instead of Pmode
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2012 15:03:12 +0000 (15:03 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2012 15:03:12 +0000 (15:03 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185057 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c

index 3e5e76d..a4236cd 100644 (file)
@@ -1,3 +1,9 @@
+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>
 
        * coverage.c (get_gcov_type): Use type_for_mode.
index 973bbeb..0527a2f 100644 (file)
@@ -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);