From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20911 invoked by alias); 3 Feb 2012 19:35:26 -0000 Received: (qmail 20759 invoked by uid 22791); 3 Feb 2012 19:35:24 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 03 Feb 2012 19:35:11 +0000 From: "b.r.longbons at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/52116] New: pragma GCC diagnostic only acts on some lines Date: Fri, 03 Feb 2012 19:35:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: b.r.longbons at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-02/txt/msg00404.txt.bz2 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: unassigned@gcc.gnu.org ReportedBy: b.r.longbons@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