diff options
author | gavin <gavin@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-03-24 19:22:33 +0000 |
---|---|---|
committer | gavin <gavin@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-03-24 19:22:33 +0000 |
commit | 798d212666e3b2c2868177f21ba8894395dadc6e (patch) | |
tree | 55ee4a97a9267a5eeb56f2c04bb3e2513f2bb220 /gcc/ginclude | |
parent | df26e9fa7361779b9700592d5bcfa29a8e50d2a8 (diff) | |
download | gcc-798d212666e3b2c2868177f21ba8894395dadc6e.tar.gz |
(va_arg): For little endian, eabi, objects
less than __va_reg_size are passed in registers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13760 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ginclude')
-rw-r--r-- | gcc/ginclude/va-mips.h | 8 |
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) */ |