sparc.c (function_arg_pass_by_reference): Pass variable sized objects by reference.
authorRichard Henderson <rth@redhat.com>
Tue, 26 Mar 2002 08:59:39 +0000 (00:59 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 26 Mar 2002 08:59:39 +0000 (00:59 -0800)
        * config/sparc/sparc.c (function_arg_pass_by_reference): Pass
        variable sized objects by reference.
        (sparc_va_arg): Receive them by reference too.

From-SVN: r51378

gcc/ChangeLog
gcc/config/sparc/sparc.c

index c199e446dea78422ddd1dcafbbb74cc6bef2f1b1..89dc4be2cf6b9ac3741db20efb6eaa7a41c28102 100644 (file)
@@ -1,3 +1,9 @@
+2002-03-26  Richard Henderson  <rth@redhat.com>
+
+       * config/sparc/sparc.c (function_arg_pass_by_reference): Pass
+       variable sized objects by reference.
+       (sparc_va_arg): Receive them by reference too.
+
 2002-03-26  Hartmut Penner  <hpenner@de.ibm.com>
 
        * config/s390/s390.c (s390_emit_epilogue): Change epilogue
index d1fbe2d1e0aba3b50a6473be10321831322b0c17..f6de9c5896d955256abb6f5cc61e0566faf1c937 100644 (file)
@@ -4736,8 +4736,9 @@ function_arg_pass_by_reference (cum, mode, type, named)
       return ((type && TREE_CODE (type) == ARRAY_TYPE)
              /* Consider complex values as aggregates, so care for TCmode.  */
              || GET_MODE_SIZE (mode) > 16
-             || (type && AGGREGATE_TYPE_P (type)
-                 && int_size_in_bytes (type) > 16));
+             || (type
+                 && AGGREGATE_TYPE_P (type)
+                 && (unsigned HOST_WIDE_INT) int_size_in_bytes (type) > 16));
     }
 }
 
@@ -4938,7 +4939,7 @@ sparc_va_arg (valist, type)
 
       if (AGGREGATE_TYPE_P (type))
        {
-         if (size > 16)
+         if ((unsigned HOST_WIDE_INT) size > 16)
            {
              indirect = 1;
              size = rsize = UNITS_PER_WORD;