http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59304
Bug ID: 59304 Summary: #pragma diagnostic pop fails with -Wswitch-enum Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: tromey at gcc dot gnu.org Consider this program: enum EE { ONE, TWO, THREE }; int f (enum EE e) { int r = 0; #pragma GCC diagnostic push #pragma GCC diagnostic error "-Wswitch-enum" switch (e) { case ONE: r = 1; break; case TWO: r = 2; break; case THREE: r = 3; break; } #pragma GCC diagnostic pop switch (e) { case ONE: r = 1; break; case TWO: r = 2; break; } return r; } I think this should not yield any errors, because -Wswitch-enum is popped before the second switch. However, compiling it does give an error: barimba. gcc --syntax-only r.c r.c: In function ‘f’: r.c:28:3: warning: enumeration value ‘THREE’ not handled in switch [-Wswitch-enum] switch (e) ^ I'm using git master from today: barimba. git log -1 --oneline 3dad27e 2013-11-26 Richard Biener <rguent...@suse.de>