diff options
author | merrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-04-14 23:44:01 +0000 |
---|---|---|
committer | merrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-04-14 23:44:01 +0000 |
commit | 03b9bb66f689376225644d762b62e0164a42fe2b (patch) | |
tree | fd05e86dba927fc25e09a1e9670daa9f6f7df6d3 /gcc/ginclude/va-spur.h | |
parent | 3e0d8b6992fd78646654a70603b41286ec0a642c (diff) | |
download | gcc-03b9bb66f689376225644d762b62e0164a42fe2b.tar.gz |
Reorganize va_arg
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9387 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ginclude/va-spur.h')
-rw-r--r-- | gcc/ginclude/va-spur.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/ginclude/va-spur.h b/gcc/ginclude/va-spur.h index 09092c1129f..68cbc5ced64 100644 --- a/gcc/ginclude/va-spur.h +++ b/gcc/ginclude/va-spur.h @@ -38,24 +38,24 @@ typedef struct { #define va_arg(pvar,type) \ __extension__ \ - ({ type __va_result; \ + (*({ type *__va_result; \ if ((pvar).__pnt >= 20) { \ - __va_result = *( (type *) ((pvar).__stack + (pvar).__pnt - 20)); \ + __va_result = ( (type *) ((pvar).__stack + (pvar).__pnt - 20)); \ (pvar).__pnt += (sizeof(type) + 7) & ~7; \ } \ else if ((pvar).__pnt + sizeof(type) > 20) { \ - __va_result = * (type *) (pvar).__stack; \ + __va_result = (type *) (pvar).__stack; \ (pvar).__pnt = 20 + ( (sizeof(type) + 7) & ~7); \ } \ else if (sizeof(type) == 8) { \ union {double d; int i[2];} __u; \ __u.i[0] = *(int *) ((pvar).__regs + (pvar).__pnt); \ __u.i[1] = *(int *) ((pvar).__regs + (pvar).__pnt + 4); \ - __va_result = * (type *) &__u; \ + __va_result = (type *) &__u; \ (pvar).__pnt += 8; \ } \ else { \ - __va_result = * (type *) ((pvar).__regs + (pvar).__pnt); \ + __va_result = (type *) ((pvar).__regs + (pvar).__pnt); \ (pvar).__pnt += (sizeof(type) + 3) & ~3; \ } \ - __va_result; }) + __va_result; })) |