From f34e52f774c16f4042cc44ddb471dd141a5dc583 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 30 Nov 1999 14:06:50 -0800 Subject: [PATCH] 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 --- gcc/ChangeLog | 23 ++++++++++++++--------- gcc/config/sparc/sparc.c | 11 ++++++++--- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f68da1d7644..861774f2199 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +1999-11-30 Jakub Jelinek + + * config/sparc/sparc.c (sparc_va_arg): Fix sparc64 va_arg + aggregate passing for sizes <= 16 bytes. + 1999-11-30 Bernd Schmidt * 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 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" @@ -537,12 +542,12 @@ Fri Nov 12 14:08:40 1999 Andrew Haley 1999-11-22 Andrew Haley - * 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 diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index d536a17e732..54c02305e80 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 -- 2.30.2