summaryrefslogtreecommitdiffstats
path: root/clang/test/Preprocessor/expr_define_expansion.c
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Preprocessor/expr_define_expansion.c')
-rw-r--r--clang/test/Preprocessor/expr_define_expansion.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/clang/test/Preprocessor/expr_define_expansion.c b/clang/test/Preprocessor/expr_define_expansion.c
index 3e5a2c4b0e6..23cb4355eb8 100644
--- a/clang/test/Preprocessor/expr_define_expansion.c
+++ b/clang/test/Preprocessor/expr_define_expansion.c
@@ -1,6 +1,28 @@
-// RUN: %clang_cc1 %s -E -CC -pedantic -verify
-// expected-no-diagnostics
+// RUN: %clang_cc1 %s -E -CC -verify
+// RUN: %clang_cc1 %s -E -CC -DPEDANTIC -pedantic -verify
#define FOO && 1
#if defined FOO FOO
#endif
+
+#define A
+#define B defined(A)
+#if B // expected-warning{{macro expansion producing 'defined' has undefined behavior}}
+#endif
+
+#define m_foo
+#define TEST(a) (defined(m_##a) && a)
+
+#if defined(PEDANTIC)
+// expected-warning@+4{{macro expansion producing 'defined' has undefined behavior}}
+#endif
+
+// This shouldn't warn by default, only with pedantic:
+#if TEST(foo)
+#endif
+
+
+// Only one diagnostic for this case:
+#define INVALID defined(
+#if INVALID // expected-error{{macro name missing}}
+#endif
OpenPOWER on IntegriCloud