http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52116
Bug #: 52116 Summary: pragma GCC diagnostic only acts on some lines Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: b.r.longb...@gmail.com Created attachment 26567 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26567 two and a half testcases The attachment has two cases, but I think it might be the same bug. The second case is much easier to understand. Case 1. Wrapping a warning location in _Pragma("GCC diagnostic ignored \"-Wshadow\"") does not work (sometimes). This precludes error suppression during macro expansion. Oddly, it suppresses as expected (mostly) if both are on the same line. (Although it behaves oddly if one is "warning" and one is "ignored") Case 2: If an error has multiple locations, such as "-Wshadow", it will still be reported at the original location, if it is suppressed at the new location. This leads to a confusing, isolated message: error: shadowed declaration is here [-Werror=shadow] Tested: Debian GCC 4.6.2-11, GCC trunk r183363