From: Richard Stallman Date: Sun, 15 Dec 1991 19:56:55 +0000 (+0000) Subject: Initial revision X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0dbbbb09d3c7c393dc1b7774fee3caa95d9b3cb1;p=gcc.git Initial revision From-SVN: r119 --- diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h new file mode 100644 index 00000000000..0ea8d9287b0 --- /dev/null +++ b/gcc/ginclude/stdarg.h @@ -0,0 +1,46 @@ +/* stdarg.h for GNU. + Note that the type used in va_arg is supposed to match the + actual type **after default promotions**. + Thus, va_arg (..., short) is not valid. */ + +#ifndef _STDARG_H +#define _STDARG_H + +#ifdef __m88k__ +#include "va-m88k.h" +#else +#ifdef __i860__ +#include "va-i860.h" +#else + +/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. */ +#ifndef _VA_LIST_ +#define _VA_LIST_ +typedef char *va_list; +#endif /* _VA_LIST_ */ + +/* Amount of space required in an argument list for an arg of type TYPE. + TYPE may alternatively be an expression whose type is used. */ + +#define __va_rounded_size(TYPE) \ + (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) + +#ifndef __sparc__ +#define va_start(AP, LASTARG) \ + (AP = ((char *) __builtin_next_arg ())) +#else +#define va_start(AP, LASTARG) \ + (__builtin_saveregs (), \ + AP = ((char *) __builtin_next_arg ())) +#endif + +void va_end (va_list); /* Defined in gnulib */ +#define va_end(AP) + +#define va_arg(AP, TYPE) \ + (AP += __va_rounded_size (TYPE), \ + *((TYPE *) (AP - __va_rounded_size (TYPE)))) + +#endif /* not i860 */ +#endif /* not m88k */ +#endif /* _STDARG_H */