1 /* { dg-do preprocess } */ 2 3 #pragma GCC poison foo 4 foo /* { dg-error "foo" "use of foo" } */ 5 #pragma GCC poison foo2 foo3 6 foo2 /* { dg-error "foo2" "use of foo2" } */ 7 foo3 /* { dg-error "foo3" "use of foo3" } */ 8 #pragma GCC poison foo4 foo5 9 foo4 /* { dg-error "foo4" "use of foo4" } */ 10 foo5 /* { dg-error "foo5" "use of foo5" } */ 11 #pragma GCC poison +++ /* { dg-error "invalid" "poison non-identifier" } */ 12 #define foo6 123 13 #pragma GCC poison foo6 /* { dg-warning "foo6" "poison defined macro" } */ 14 #define foo6 345 /* { dg-error "foo6" "def of foo6" } */ 15 #define foo6 456 /* { dg-error "foo6" "redef of foo6" } */ 16 #ifdef foo6 /* { dg-error "foo6" "#ifdef foo6" } */ 17 #error hey! foo6 defined! 18 #endif 19 #if defined(foo6) /* { dg-error "foo6" "#if defined foo6" } */ 20 #error foo6 still defined! 21 #else 22 foo6 /* { dg-error "foo6" "use of foo6" } */ 23 #endif 24 #pragma GCC poison 25