summaryrefslogtreecommitdiff
path: root/gcc/ginclude
diff options
context:
space:
mode:
authorGavin Romig-Koch <gavin@gcc.gnu.org>1997-03-24 19:22:33 +0000
committerGavin Romig-Koch <gavin@gcc.gnu.org>1997-03-24 19:22:33 +0000
commit92ad84737f63a918068c5680e582907387fac575 (patch)
tree55ee4a97a9267a5eeb56f2c04bb3e2513f2bb220 /gcc/ginclude
parent946f2aa841fcd717db84df3817b7f6f924f1e2db (diff)
downloadgcc-92ad84737f63a918068c5680e582907387fac575.tar.gz
(va_arg): For little endian, eabi, objects
less than __va_reg_size are passed in registers. From-SVN: r13760
Diffstat (limited to 'gcc/ginclude')
-rw-r--r--gcc/ginclude/va-mips.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/ginclude/va-mips.h b/gcc/ginclude/va-mips.h
index 793d31d8fae..af1e1f461b6 100644
--- a/gcc/ginclude/va-mips.h
+++ b/gcc/ginclude/va-mips.h
@@ -219,9 +219,11 @@ void va_end (__gnuc_va_list); /* Defined in libgcc.a */
: *(__type *) (void *) __va_next_addr (__AP, __type)))
#else
#define va_arg(__AP, __type) \
- (__builtin_classify_type (* (__type *) 0) >= __record_type_class \
- ? **(__type **) (void *) __va_next_addr (__AP, __type) \
- : *(__type *) (void *) __va_next_addr (__AP, __type))
+ ((__va_rounded_size (__type) <= __va_reg_size) \
+ ? *(__type *) (void *) __va_next_addr (__AP, __type) \
+ : (__builtin_classify_type (* (__type *) 0) >= __record_type_class \
+ ? **(__type **) (void *) __va_next_addr (__AP, __type) \
+ : *(__type *) (void *) __va_next_addr (__AP, __type)))
#endif
#else /* ! defined (__mips_eabi) */