From def0af189871a499efdc9bc37438d8b20eb702ab Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 27 Apr 2011 23:41:48 -0400 Subject: use compiler builtins for variadic macros when available this slightly cuts down on the degree musl "fights with" gcc, but more importantly, it fixes a critical bug when gcc inlines a variadic function and optimizes out the variadic arguments due to noticing that they were "not used" (by __builtin_va_arg). we leave the old code in place if __GNUC__ >= 3 is false; it seems like it might be necessary at least for tinycc support and perhaps if anyone ever gets around to fixing gcc 2.95.3 enough to make it work.. --- arch/i386/bits/alltypes.h.sh | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'arch/i386/bits') diff --git a/arch/i386/bits/alltypes.h.sh b/arch/i386/bits/alltypes.h.sh index 9d94c911..335c0957 100755 --- a/arch/i386/bits/alltypes.h.sh +++ b/arch/i386/bits/alltypes.h.sh @@ -19,7 +19,12 @@ union \1 \2;\ TYPEDEF unsigned size_t; TYPEDEF int ssize_t; TYPEDEF long ptrdiff_t; + +#if __GNUC__ >= 3 +TYPEDEF __builtin_va_list va_list; +#else TYPEDEF struct __va_list * va_list; +#endif TYPEDEF long wchar_t; TYPEDEF long wint_t; -- cgit 1.4.1