diff options
Diffstat (limited to 'clang/test/Preprocessor/expr_define_expansion.c')
-rw-r--r-- | clang/test/Preprocessor/expr_define_expansion.c | 26 |
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 |