diff options
author | Richard Henderson <rth@redhat.com> | 2002-03-26 00:59:39 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-03-26 00:59:39 -0800 |
commit | f36dea3c926a8e614411b2ba542479f3f8cb0c17 (patch) | |
tree | f409a60914b53eff1250ae049d2f851e8201a9c0 /gcc | |
parent | 43f2b30807999400840e768014cf495796113987 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 7 |
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; |