aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-09-15 05:08:02 +0000
committerRichard Stallman <rms@gnu.org>1992-09-15 05:08:02 +0000
commit7436f435abe0acd250189907a0c310927d11bac6 (patch)
treec311824632a76447650144710d097e05f5a0c2a8
parent347099d6ef97a689c52d883c5547f024a719da24 (diff)
downloadgcc-7436f435abe0acd250189907a0c310927d11bac6.zip
gcc-7436f435abe0acd250189907a0c310927d11bac6.tar.gz
gcc-7436f435abe0acd250189907a0c310927d11bac6.tar.bz2
(va_arg): Cast ptr to void *, then to TYPE *.
From-SVN: r2124
-rw-r--r--gcc/ginclude/stdarg.h4
-rw-r--r--gcc/ginclude/va-i960.h4
-rw-r--r--gcc/ginclude/va-m88k.h15
-rw-r--r--gcc/ginclude/va-mips.h12
-rw-r--r--gcc/ginclude/va-pa.h4
-rw-r--r--gcc/ginclude/va-pyr.h4
-rw-r--r--gcc/ginclude/va-sparc.h6
7 files changed, 31 insertions, 18 deletions
diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h
index 79fe404..ee9204a 100644
--- a/gcc/ginclude/stdarg.h
+++ b/gcc/ginclude/stdarg.h
@@ -62,9 +62,11 @@ typedef void *__gnuc_va_list;
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
#define va_end(AP)
+/* We cast to void * and then to TYPE * because this avoids
+ a warning about increasing the alignment requirement. */
#define va_arg(AP, TYPE) \
(AP = (char *) (AP) + __va_rounded_size (TYPE), \
- *((TYPE *) ((char *) (AP) - __va_rounded_size (TYPE))))
+ *((TYPE *) (void *) ((char *) (AP) - __va_rounded_size (TYPE))))
#endif /* _STDARG_H */
#endif /* not alpha */
diff --git a/gcc/ginclude/va-i960.h b/gcc/ginclude/va-i960.h
index 28fc0d4..549e9fe 100644
--- a/gcc/ginclude/va-i960.h
+++ b/gcc/ginclude/va-i960.h
@@ -40,6 +40,8 @@ typedef unsigned __gnuc_va_list[2];
#define va_start(AP) ((AP)[1] = 0, *(AP) = (unsigned) &va_alist)
#endif
+/* We cast to void * and then to TYPE * because this avoids
+ a warning about increasing the alignment requirement. */
#define va_arg(AP, T) \
( \
( \
@@ -48,7 +50,7 @@ typedef unsigned __gnuc_va_list[2];
: ((AP)[1] = __vpad ((AP)[1], T)) \
), \
\
- *((T *) ((char *) *(AP) + (AP)[1] - __vsiz (T))) \
+ *((T *) (void *) ((char *) *(AP) + (AP)[1] - __vsiz (T))) \
)
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
diff --git a/gcc/ginclude/va-m88k.h b/gcc/ginclude/va-m88k.h
index 5c7b10ec..ae1d4d6 100644
--- a/gcc/ginclude/va-m88k.h
+++ b/gcc/ginclude/va-m88k.h
@@ -63,13 +63,16 @@ typedef struct
#define __va_size(TYPE) ((sizeof(TYPE) + 3) >> 2)
-#define va_arg(AP,TYPE) \
+/* We cast to void * and then to TYPE * because this avoids
+ a warning about increasing the alignment requirement. */
+#define va_arg(AP,TYPE) \
( (AP).__va_arg = (((AP).__va_arg + (1 << (__alignof__(TYPE) >> 3)) - 1) \
- & ~((1 << (__alignof__(TYPE) >> 3)) - 1)) \
- + __va_size(TYPE), \
- *((TYPE *) ((__va_reg_p(TYPE) && (AP).__va_arg < 8 + __va_size(TYPE) \
- ? (AP).__va_reg : (AP).__va_stk) \
- + ((AP).__va_arg - __va_size(TYPE)))))
+ & ~((1 << (__alignof__(TYPE) >> 3)) - 1)) \
+ + __va_size(TYPE), \
+ *((TYPE *) (void *) ((__va_reg_p(TYPE) \
+ && (AP).__va_arg < 8 + __va_size(TYPE) \
+ ? (AP).__va_reg : (AP).__va_stk) \
+ + ((AP).__va_arg - __va_size(TYPE)))))
#define va_end(AP)
diff --git a/gcc/ginclude/va-mips.h b/gcc/ginclude/va-mips.h
index 4222f8b..ec0e780 100644
--- a/gcc/ginclude/va-mips.h
+++ b/gcc/ginclude/va-mips.h
@@ -49,11 +49,13 @@ void va_end (__gnuc_va_list); /* Defined in libgcc.a */
#define va_arg(list, mode) ((mode *)(list += __va_rounded_size(mode)))[-1]
#else /* !lint */
-#define va_arg(__AP, __type) \
- ((__type *)(__AP = (char *) ((__alignof(__type) > 4 \
- ? ((int)__AP + 8 - 1) & -8 \
- : ((int)__AP + 4 - 1) & -4) \
- + __va_rounded_size(__type))))[-1]
+/* We cast to void * and then to TYPE * because this avoids
+ a warning about increasing the alignment requirement. */
+#define va_arg(__AP, __type) \
+ ((__type *) (void *) (__AP = (char *) ((__alignof(__type) > 4 \
+ ? ((int)__AP + 8 - 1) & -8 \
+ : ((int)__AP + 4 - 1) & -4) \
+ + __va_rounded_size(__type))))[-1]
#endif /* lint */
#endif /* defined (_STDARG_H) || defined (_VARARGS_H) */
diff --git a/gcc/ginclude/va-pa.h b/gcc/ginclude/va-pa.h
index 0d84ef7..eb6c600 100644
--- a/gcc/ginclude/va-pa.h
+++ b/gcc/ginclude/va-pa.h
@@ -22,11 +22,11 @@ typedef double *__gnuc_va_list;
#define va_arg(AP,TYPE) \
(sizeof(TYPE) > 8 ? \
((AP = (__gnuc_va_list) ((char *)AP - sizeof (int))), \
- (*((TYPE *) (*((int *) (AP)))))) \
+ (*((TYPE *) (void *) (*((int *) (AP)))))) \
:((AP = \
(__gnuc_va_list) ((long)((char *)AP - sizeof (TYPE)) \
& (sizeof(TYPE) > 4 ? ~0x7 : ~0x3))), \
- (*((TYPE *) ((char *)AP + ((8 - sizeof(TYPE)) % 4))))))
+ (*((TYPE *) (void *) ((char *)AP + ((8 - sizeof(TYPE)) % 4))))))
#define va_end(AP)
diff --git a/gcc/ginclude/va-pyr.h b/gcc/ginclude/va-pyr.h
index 61bddbf..86f3715 100644
--- a/gcc/ginclude/va-pyr.h
+++ b/gcc/ginclude/va-pyr.h
@@ -107,6 +107,8 @@ typedef __va_buf __gnuc_va_list;
#define __extension__
#endif
+/* We cast to void * and then to TYPE * because this avoids
+ a warning about increasing the alignment requirement. */
#define va_arg(_AP, _MODE) \
__extension__ \
({__voidptr *__ap = (__voidptr*)&_AP; \
@@ -119,7 +121,7 @@ __extension__ \
((void *)__ap[__onstack])+=__size; \
if (__onstack==0 || (int)(__ap[2])==11) \
__ap[2]+= (__size >> 2); \
- *(( _MODE *)__param_addr); \
+ *(( _MODE *) (void *) __param_addr); \
})
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
diff --git a/gcc/ginclude/va-sparc.h b/gcc/ginclude/va-sparc.h
index f98bbc4..2744c432 100644
--- a/gcc/ginclude/va-sparc.h
+++ b/gcc/ginclude/va-sparc.h
@@ -59,6 +59,8 @@ void va_end (__gnuc_va_list); /* Defined in libgcc.a */
not word-aligned, we advance the pointer to the first non-reg slot. */
/* We don't declare the union member `d' to have type TYPE
because that would lose in C++ if TYPE has a constructor. */
+/* We cast to void * and then to TYPE * because this avoids
+ a warning about increasing the alignment requirement. */
#define va_arg(pvar,TYPE) \
__extension__ \
({ TYPE __va_temp; \
@@ -70,9 +72,9 @@ __extension__ \
__u.__i[0] = ((int *) (pvar))[0]; \
__u.__i[1] = ((int *) (pvar))[1]; \
(pvar) += 8; \
- *(TYPE *)__u.__d; }) \
+ *(TYPE *) (void *) __u.__d; }) \
: ((pvar) += __va_rounded_size (TYPE), \
- *((TYPE *) ((pvar) - __va_rounded_size (TYPE)))));})
+ *((TYPE *) (void *) ((pvar) - __va_rounded_size (TYPE)))));})
#endif /* defined (_STDARG_H) || defined (_VARARGS_H) */