diff --git a/lib/Headers/stdarg.h b/lib/Headers/stdarg.h index a57e183648718d80ae69b8974795449841199b78..101426fff15159fd7c8b3ec94f3db2d328e574b8 100644 --- a/lib/Headers/stdarg.h +++ b/lib/Headers/stdarg.h @@ -43,10 +43,9 @@ typedef __builtin_va_list va_list; #define va_copy(dest, src) __builtin_va_copy(dest, src) #endif -/* Hack required to make standard headers work, at least on Ubuntu */ #ifndef __GNUC_VA_LIST #define __GNUC_VA_LIST 1 -#endif typedef __builtin_va_list __gnuc_va_list; +#endif #endif /* __STDARG_H */ diff --git a/test/Headers/stdarg-gnuc_va_list.c b/test/Headers/stdarg-gnuc_va_list.c new file mode 100644 index 0000000000000000000000000000000000000000..da9db8ddc20ac5997f1f4a749a16837910625740 --- /dev/null +++ b/test/Headers/stdarg-gnuc_va_list.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -Wsystem-headers -std=c99 %s +// expected-no-diagnostics + +// Check that no warnings are emitted from stdarg.h if __gnuc_va_list has +// previously been defined in another header file. +typedef __builtin_va_list __va_list; +typedef __va_list __gnuc_va_list; +#define __GNUC_VA_LIST + +#include <stdarg.h>