summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Robinson <paul.robinson@sony.com>2017-01-23 19:09:21 +0000
committerPaul Robinson <paul.robinson@sony.com>2017-01-23 19:09:21 +0000
commit13f97ca3bc80be3a2fd58793fd95fe8e12557786 (patch)
treef9cb67403750570f25af32087ade510432408ef8
parent425765b62654059a8c7ca3b6c33468df1a3390dd (diff)
Guard __gnuc_va_list typedef.
Differential Revision: http://reviews.llvm.org/D28620 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292819 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Headers/stdarg.h3
-rw-r--r--test/Headers/stdarg-gnuc_va_list.c10
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/Headers/stdarg.h b/lib/Headers/stdarg.h
index a57e183648..101426fff1 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 0000000000..da9db8ddc2
--- /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>