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