/* Copyright (C) 2000 Free Software Foundation, Inc. */ /* { dg-do preprocess } */ /* Tests the _Pragma operator. Contributed by Neil Booth 1 Nov 2000. */ /* Within the preprocessor, the easy pragma to test is "poison". */ #pragma GCC poison p1 p1 /* { dg-error "poisoned" } */ /* Standard use of _Pragma. */ _Pragma ("GCC poison p2") p2 /* { dg-error "poisoned" } */ /* Don't interpret _Pragmas in directives. The standard is not clear on this, but I think this makes most sense. */ #if 1 _Pragma (L"GCC poison p3") /* { dg-error "missing binary operator" } */ p3 #endif #define M1 _Pragma ("GCC poison p4") p4 /* No problem; not yet poisoned. */ #define M2(x) _Pragma (#x) /* Now test macro expansion with embedded _Pragmas. */ M1 p4 /* { dg-error "poisoned" } */ M2 (GCC poison p5) p5 /* { dg-error "poisoned" } */ /* Not interpreting _Pragma in directives means they don't nest. */ _Pragma ("_Pragma (\"GCC poison p6\") GCC poison p7") p6 p7 /* Check we ignore them in false conditionals. */ #if 0 _Pragma ("GCC poison p8") #endif p8 /* No problem. */