aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc/sparc.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>1999-11-30 14:06:50 -0800
committerRichard Henderson <rth@gcc.gnu.org>1999-11-30 14:06:50 -0800
commitf34e52f774c16f4042cc44ddb471dd141a5dc583 (patch)
tree8dd62a86909d83f629454c26c7a739bb48edaed5 /gcc/config/sparc/sparc.c
parent4cb74b7695ec04b8705326d38b0baa8eb1f2a449 (diff)
downloadgcc-f34e52f774c16f4042cc44ddb471dd141a5dc583.zip
gcc-f34e52f774c16f4042cc44ddb471dd141a5dc583.tar.gz
gcc-f34e52f774c16f4042cc44ddb471dd141a5dc583.tar.bz2
sparc.c (sparc_va_arg): Fix sparc64 va_arg aggregate passing for sizes <= 16 bytes.
* config/sparc/sparc.c (sparc_va_arg): Fix sparc64 va_arg aggregate passing for sizes <= 16 bytes. From-SVN: r30726
Diffstat (limited to 'gcc/config/sparc/sparc.c')
-rw-r--r--gcc/config/sparc/sparc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index d536a17..54c0230 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -4332,10 +4332,15 @@ sparc_va_arg (valist, type)
if (TYPE_ALIGN (type) >= 2 * BITS_PER_WORD)
align = 2 * UNITS_PER_WORD;
- if (AGGREGATE_TYPE_P (type) && size > 16)
+ if (AGGREGATE_TYPE_P (type))
{
- indirect = 1;
- size = rsize = UNITS_PER_WORD;
+ if (size > 16)
+ {
+ indirect = 1;
+ size = rsize = UNITS_PER_WORD;
+ }
+ else
+ size = rsize;
}
}
else