aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog23
-rw-r--r--gcc/config/sparc/sparc.c11
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