aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-03-26 00:59:39 -0800
committerRichard Henderson <rth@gcc.gnu.org>2002-03-26 00:59:39 -0800
commitf36dea3c926a8e614411b2ba542479f3f8cb0c17 (patch)
treef409a60914b53eff1250ae049d2f851e8201a9c0 /gcc
parent43f2b30807999400840e768014cf495796113987 (diff)
downloadgcc-f36dea3c926a8e614411b2ba542479f3f8cb0c17.zip
gcc-f36dea3c926a8e614411b2ba542479f3f8cb0c17.tar.gz
gcc-f36dea3c926a8e614411b2ba542479f3f8cb0c17.tar.bz2
sparc.c (function_arg_pass_by_reference): Pass variable sized objects by reference.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sparc/sparc.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c199e44..89dc4be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index d1fbe2d..f6de9c5 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -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;