// 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