aboutsummaryrefslogtreecommitdiff
path: root/gcc/ginclude
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1995-04-14 23:44:01 +0000
committerJason Merrill <merrill@gnu.org>1995-04-14 23:44:01 +0000
commit7644b152a6f6e1282c4e5f564185af6f16d52926 (patch)
treefd05e86dba927fc25e09a1e9670daa9f6f7df6d3 /gcc/ginclude
parentfa42ea0227fb2915d639c83c0adf770225081377 (diff)
downloadgcc-7644b152a6f6e1282c4e5f564185af6f16d52926.zip
gcc-7644b152a6f6e1282c4e5f564185af6f16d52926.tar.gz
gcc-7644b152a6f6e1282c4e5f564185af6f16d52926.tar.bz2
Reorganize va_arg
From-SVN: r9387
Diffstat (limited to 'gcc/ginclude')
-rw-r--r--gcc/ginclude/va-clipper.h8
-rw-r--r--gcc/ginclude/va-pa.h6
-rw-r--r--gcc/ginclude/va-pyr.h6
-rw-r--r--gcc/ginclude/va-sparc.h13
-rw-r--r--gcc/ginclude/va-spur.h12
5 files changed, 22 insertions, 23 deletions
diff --git a/gcc/ginclude/va-clipper.h b/gcc/ginclude/va-clipper.h
index 6a797dc..21ddc562 100644
--- a/gcc/ginclude/va-clipper.h
+++ b/gcc/ginclude/va-clipper.h
@@ -46,11 +46,11 @@ typedef struct
((AP).__va_ap = ((AP).__va_ap + sizeof (int) - 1) & ~(sizeof (int) - 1)))
#define va_arg(AP, TYPE) \
- ((AP).__va_num < 2 && __builtin_classify_type (* (TYPE *)0) < 12 \
+ (*((AP).__va_num < 2 && __builtin_classify_type (* (TYPE *)0) < 12 \
? (__builtin_classify_type (* (TYPE *)0) == 8 \
- ? (*(TYPE *)(AP).__va_reg[2 * (AP).__va_num++ + 1]) \
- : (*(TYPE *)(AP).__va_reg[2 * (AP).__va_num++ ])) \
- : ((AP).__va_num++, __va_round (AP,TYPE), *((TYPE *)((AP).__va_ap))++))
+ ? ((TYPE *)(AP).__va_reg[2 * (AP).__va_num++ + 1]) \
+ : ((TYPE *)(AP).__va_reg[2 * (AP).__va_num++ ])) \
+ : ((AP).__va_num++, __va_round (AP,TYPE), ((TYPE *)((AP).__va_ap))++)))
#define va_end(AP) ((void) 0)
diff --git a/gcc/ginclude/va-pa.h b/gcc/ginclude/va-pa.h
index 467bcce..b6b81dd 100644
--- a/gcc/ginclude/va-pa.h
+++ b/gcc/ginclude/va-pa.h
@@ -33,13 +33,13 @@ typedef double *__gnuc_va_list;
#endif
#define va_arg(AP,TYPE) \
- (sizeof(TYPE) > 8 ? \
+ (*(sizeof(TYPE) > 8 ? \
((AP = (__gnuc_va_list) ((char *)AP - sizeof (int))), \
- (*((TYPE *) (void *) (*((int *) (AP)))))) \
+ (((TYPE *) (void *) (*((int *) (AP)))))) \
:((AP = \
(__gnuc_va_list) ((long)((char *)AP - sizeof (TYPE)) \
& (sizeof(TYPE) > 4 ? ~0x7 : ~0x3))), \
- (*((TYPE *) (void *) ((char *)AP + ((8 - sizeof(TYPE)) % 4))))))
+ (((TYPE *) (void *) ((char *)AP + ((8 - sizeof(TYPE)) % 4)))))))
#ifndef va_end
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
diff --git a/gcc/ginclude/va-pyr.h b/gcc/ginclude/va-pyr.h
index 6ffd874..5ad4ba9 100644
--- a/gcc/ginclude/va-pyr.h
+++ b/gcc/ginclude/va-pyr.h
@@ -111,7 +111,7 @@ typedef __va_buf __gnuc_va_list;
a warning about increasing the alignment requirement. */
#define va_arg(_AP, _MODE) \
__extension__ \
-({__voidptr *__ap = (__voidptr*)&_AP; \
+(*({__voidptr *__ap = (__voidptr*)&_AP; \
register int __size = sizeof (_MODE); \
register int __onstack = \
(__size > 8 || ( (int)(__ap[2]) > 11) || \
@@ -121,8 +121,8 @@ __extension__ \
((void *)__ap[__onstack])+=__size; \
if (__onstack==0 || (int)(__ap[2])==11) \
__ap[2]+= (__size >> 2); \
- *(( _MODE *) (void *) __param_addr); \
-})
+ (( _MODE *) (void *) __param_addr); \
+}))
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
#define va_end(_X) ((void)0)
diff --git a/gcc/ginclude/va-sparc.h b/gcc/ginclude/va-sparc.h
index 3df289c..525420a 100644
--- a/gcc/ginclude/va-sparc.h
+++ b/gcc/ginclude/va-sparc.h
@@ -132,7 +132,7 @@ enum __va_type_classes {
#define va_arg(pvar,TYPE) \
__extension__ \
-({int __type = __builtin_classify_type (* (TYPE *) 0); \
+(*({int __type = __builtin_classify_type (* (TYPE *) 0); \
void * __result; \
if (__type == __real_type_class) /* float? */ \
{ \
@@ -170,7 +170,7 @@ __extension__ \
__r = (void **) pvar.__va_next_stack++; \
__result = *__r; \
} \
- *(TYPE *) __result;})
+ (TYPE *) __result;}))
#else /* not __sparc_v9__ */
@@ -184,18 +184,17 @@ __extension__ \
The casts to char * avoid warnings about invalid pointer arithmetic. */
#define va_arg(pvar,TYPE) \
__extension__ \
-({ TYPE __va_temp; \
- ((__builtin_classify_type (__va_temp) >= __record_type_class) \
+(*({((__builtin_classify_type (*(TYPE*) 0) >= __record_type_class) \
? ((pvar) = (char *)(pvar) + __va_rounded_size (TYPE *), \
- **(TYPE **) (void *) ((char *)(pvar) - __va_rounded_size (TYPE *))) \
+ *(TYPE **) (void *) ((char *)(pvar) - __va_rounded_size (TYPE *))) \
: __va_rounded_size (TYPE) == 8 \
? ({ union {char __d[sizeof (TYPE)]; int __i[2];} __u; \
__u.__i[0] = ((int *) (void *) (pvar))[0]; \
__u.__i[1] = ((int *) (void *) (pvar))[1]; \
(pvar) = (char *)(pvar) + 8; \
- *(TYPE *) (void *) __u.__d; }) \
+ (TYPE *) (void *) __u.__d; }) \
: ((pvar) = (char *)(pvar) + __va_rounded_size (TYPE), \
- *((TYPE *) (void *) ((char *)(pvar) - __va_rounded_size (TYPE)))));})
+ ((TYPE *) (void *) ((char *)(pvar) - __va_rounded_size (TYPE)))));}))
#endif /* not __sparc_v9__ */
#endif /* defined (_STDARG_H) || defined (_VARARGS_H) */
diff --git a/gcc/ginclude/va-spur.h b/gcc/ginclude/va-spur.h
index 09092c1..68cbc5c 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; }))