/* { dg-do preprocess } */ #pragma GCC poison foo foo /* { dg-error "foo" "use of foo" } */ #pragma GCC poison foo2 foo3 foo2 /* { dg-error "foo2" "use of foo2" } */ foo3 /* { dg-error "foo3" "use of foo3" } */ #pragma GCC poison foo4 foo5 foo4 /* { dg-error "foo4" "use of foo4" } */ foo5 /* { dg-error "foo5" "use of foo5" } */ #pragma GCC poison +++ /* { dg-error "invalid" "poison non-identifier" } */ #define foo6 123 #pragma GCC poison foo6 /* { dg-warning "foo6" "poison defined macro" } */ #define foo6 345 /* { dg-error "foo6" "def of foo6" } */ #define foo6 456 /* { dg-error "foo6" "redef of foo6" } */ #ifdef foo6 /* { dg-error "foo6" "#ifdef foo6" } */ #error hey! foo6 defined! #endif #if defined(foo6) /* { dg-error "foo6" "#if defined foo6" } */ #error foo6 still defined! #else foo6 /* { dg-error "foo6" "use of foo6" } */ #endif #pragma GCC poison