Pass pointers in word_mode instead of Pmode
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 7 Mar 2012 15:03:12 +0000 (15:03 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 7 Mar 2012 15:03:12 +0000 (07:03 -0800)
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

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

index 3e5e76d99b4e6fadd3d8614faa96209e88f7df6b..a4236cd14964ca0bef50fbaf68ce5ddfc856a582 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 973bbeb68db04ef559087ae78d967feaf7e6f478..0527a2f2e1c9134ca51de7300185599366b490ec 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);