OSDN Git Service

Initial revision
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 15 Dec 1991 19:56:55 +0000 (19:56 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 15 Dec 1991 19:56:55 +0000 (19:56 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ginclude/stdarg.h [new file with mode: 0644]

diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h
new file mode 100644 (file)
index 0000000..0ea8d92
--- /dev/null
@@ -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 */