From: Richard Stallman Date: Mon, 30 Nov 1992 23:07:11 +0000 (+0000) Subject: (va_arg): Copy both definitions from gstdarg.h. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5153d9d693cf55f66212390278efe0dc73b772c2;p=gcc.git (va_arg): Copy both definitions from gstdarg.h. From-SVN: r2821 --- diff --git a/gcc/ginclude/varargs.h b/gcc/ginclude/varargs.h index b04dced5a79..a66c72ae597 100644 --- a/gcc/ginclude/varargs.h +++ b/gcc/ginclude/varargs.h @@ -87,9 +87,19 @@ typedef void *__gnuc_va_list; #define __va_rounded_size(TYPE) \ (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) +#if defined (__arm__) || defined (__i386__) || defined (__ns32000__) || defined (__vax__) +/* This is for little-endian machines; small args are padded upward. */ #define va_arg(AP, TYPE) \ - (AP += __va_rounded_size (TYPE), \ - *((TYPE *) (AP - __va_rounded_size (TYPE)))) + (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ + *((TYPE *) (void *) ((char *) (AP) - __va_rounded_size (TYPE)))) +#else /* big-endian */ +/* This is for big-endian machines; small args are padded downward. */ +#define va_arg(AP, TYPE) \ + (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ + *((TYPE *) (void *) ((char *) (AP) - ((sizeof (TYPE) < 4 \ + ? sizeof (TYPE) \ + : __va_rounded_size (TYPE)))))) +#endif /* big-endian */ #endif /* not alpha */ #endif /* not i960 */