diff options
author | Jakub Jelinek <jakub@redhat.com> | 1999-11-30 14:06:50 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-11-30 14:06:50 -0800 |
commit | f34e52f774c16f4042cc44ddb471dd141a5dc583 (patch) | |
tree | 8dd62a86909d83f629454c26c7a739bb48edaed5 /gcc/config/sparc/sparc.c | |
parent | 4cb74b7695ec04b8705326d38b0baa8eb1f2a449 (diff) | |
download | gcc-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.c | 11 |
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 |