/* { dg-options "-Wunused-variable" } */ /* Verify that ignoring -Wunused-variable works, for various placements of the variable and the _Pragma. */ /* Test 1: the _Pragma is in a macro, but the affected code isn't. */ #pragma GCC diagnostic push #define MACRO_1 \ _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") int test_1() { _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") int x; return 0; } #pragma GCC diagnostic pop /* Test 2: neither the _Pragma nor the affected code are in a macro. */ #pragma GCC diagnostic push int test_2() { _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") int x; return 0; } #pragma GCC diagnostic pop /* Test 3: the _Pragma isn't in a macro, but the affected code is. */ #define MACRO_3 \ int x; #pragma GCC diagnostic push int test_3() { _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") MACRO_3 return 0; } #pragma GCC diagnostic pop /* Test 4: the _Pragma and the affected code are in different macros. */ #pragma GCC diagnostic push #define MACRO_4A \ _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") #define MACRO_4B \ int x; int test_4() { MACRO_4A; MACRO_4B return 0; } #pragma GCC diagnostic pop /* Test 5: both the _Pragma and the affected code are in the same macro. */ #pragma GCC diagnostic push #define MACRO_5 \ _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \ int x; int test_5() { MACRO_5; return 0; } #pragma GCC diagnostic pop