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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 23 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 11 |
2 files changed, 22 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f68da1d..861774f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +1999-11-30 Jakub Jelinek <jakub@redhat.com> + + * config/sparc/sparc.c (sparc_va_arg): Fix sparc64 va_arg + aggregate passing for sizes <= 16 bytes. + 1999-11-30 Bernd Schmidt <bernds@cygnus.co.uk> * cse.c (FIXED_REGNO_P): Delete tests for OVERLAPPING_REGNO_P. @@ -462,10 +467,10 @@ Mon Nov 22 23:09:44 1999 David O'Brien <obrien@FreeBSD.org> directly by i386/freebsd.h. * configure: Rebuilt. - * xm-i386.h: Define `__i386__' if not defined, rather than `i386' + * xm-i386.h: Define `__i386__' if not defined, rather than `i386' which is in the user's namespace. - * libgcc2.c: Look for the ANSI-C approved `__i386__' symbol, vs. - `i386' which is not in our namespace. + * libgcc2.c: Look for the ANSI-C approved `__i386__' symbol, vs. + `i386' which is not in our namespace. Mon Nov 22 22:58:01 1999 "R. Kelley Cook" <KelleyCook@attglobal.net> @@ -537,12 +542,12 @@ Fri Nov 12 14:08:40 1999 Andrew Haley <aph@cygnus.com> 1999-11-22 Andrew Haley <aph@cygnus.com> - * varasm.c (function_defined): Remove. - (make_function_rtl): Don't set function_defined. - (make_decl_rtl): Remove global register warning. - * regclass.c (no_global_reg_vars): New variable. - (globalize_reg): Warn if function has already been defined. - (regclass_init): Set no_global_reg_vars. + * varasm.c (function_defined): Remove. + (make_function_rtl): Don't set function_defined. + (make_decl_rtl): Remove global register warning. + * regclass.c (no_global_reg_vars): New variable. + (globalize_reg): Warn if function has already been defined. + (regclass_init): Set no_global_reg_vars. Mon Nov 22 14:42:22 MET 1999 Jan Hubicka <hubicka@freesoft.cz> 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 |