]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ia64.c (ia64_va_arg): Pass pointer for variable-sized type through convert_memory_add...
authorZack Weinberg <zack@gcc.gnu.org>
Wed, 31 Dec 2003 23:45:39 +0000 (23:45 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Wed, 31 Dec 2003 23:45:39 +0000 (23:45 +0000)
* config/ia64/ia64.c (ia64_va_arg): Pass pointer for
variable-sized type through convert_memory_address.
(ia64_in_small_data_p): Always return false for FUNCTION_DECLs.

From-SVN: r75284

gcc/ChangeLog
gcc/config/ia64/ia64.c

index bf6ba568d11cbbe151b63f6c1f4be4f998ca3789..b0ebb10b5304bf58a17b289b81a740b2ef12a73f 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-31  Zack Weinberg  <zack@codesourcery.com>
+
+       * config/ia64/ia64.c (ia64_va_arg): Pass pointer for
+       variable-sized type through convert_memory_address.
+       (ia64_in_small_data_p): Always return false for FUNCTION_DECLs.
+
 2003-12-24  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR bootstrap/13068
@@ -17,7 +23,7 @@
        2003-09-18  Mark Mitchell  <mark@codesourcery.com>
        * explow.c (convert_memory_address): Define even when
        POINTERS_EXTEND_UNSIGNED is not defined.  Do nothing if the address
-        is already in the right mode.
+       is already in the right mode.
 
 2003-12-23  Andrew Pinski  <pinskia@physics.uc.edu>
 
@@ -54,7 +60,7 @@
 
 2003-12-22  Gabriel Dos Reis <gdr@integrable-solutions.net>
 
-        PR target/11271
+       PR target/11271
        * reload.c: Revert last backport from mainline.  It breaks s390.
 
 2003-12-21  Roger Sayle  <roger@eyesopen.com>
index 21447c99ded1223a9210a6229501fd5d791d1079..6ffaff6dea22d9886c6d349f2b7e3ecc4531e945 100644 (file)
@@ -3648,8 +3648,12 @@ ia64_va_arg (valist, type)
   /* Variable sized types are passed by reference.  */
   if (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
     {
-      rtx addr = std_expand_builtin_va_arg (valist, build_pointer_type (type));
-      return gen_rtx_MEM (ptr_mode, force_reg (Pmode, addr));
+      rtx addr = force_reg (ptr_mode,
+           std_expand_builtin_va_arg (valist, build_pointer_type (type)));
+#ifdef POINTERS_EXTEND_UNSIGNED
+      addr = convert_memory_address (Pmode, addr);
+#endif
+      return gen_rtx_MEM (ptr_mode, addr);
     }
 
   /* Arguments with alignment larger than 8 bytes start at the next even
@@ -7284,6 +7288,10 @@ ia64_in_small_data_p (exp)
   if (TARGET_NO_SDATA)
     return false;
 
+  /* Functions are never small data.  */
+  if (TREE_CODE (exp) == FUNCTION_DECL)
+    return false;
+
   if (TREE_CODE (exp) == VAR_DECL && DECL_SECTION_NAME (exp))
     {
       const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp));