https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69126
Bug ID: 69126
Summary: [6 regression] _Pragma does not apply if part of a
macro
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: thiago at kde dot org
Target Milestone: ---
$ cat /tmp/test.cpp
#pragma GCC diagnostic push
int f()
{
_Pragma("GCC diagnostic ignored \"-Wunused-variable\"")
int x;
return 0;
}
#pragma GCC diagnostic pop
#pragma GCC diagnostic push
#define MACRO \
_Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
int x;
int g()
{
MACRO;
return 0;
}
#pragma GCC diagnostic pop
With GCC 4.8.5 or 5.3.1:
$ gcc -O2 -Wall -c /tmp/test.cpp
[nothing printed]
With GCC 6:
$ ~/gcc6/bin/gcc -O2 -Wall -c /tmp/test.cpp
/tmp/test.cpp: In function ‘int g()’:
/tmp/test.cpp:13:9: warning: unused variable ‘x’ [-Wunused-variable]
int x;
^
/tmp/test.cpp:17:5: note: in expansion of macro ‘MACRO’
MACRO;
^~~~~
GCC 6 built from trunk last night (20160103).