public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/53469] New: #pragma GCC diagnostic works, but using _Pragma  doesn't for -Wunused-local-typedefs
@ 2012-05-24  9:32 burnus at gcc dot gnu.org
  2012-05-25 12:54 ` [Bug c++/53469] " dodji at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-05-24  9:32 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53469

             Bug #: 53469
           Summary: #pragma GCC diagnostic works, but using _Pragma
                    doesn't for -Wunused-local-typedefs
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org
                CC: dodji@gcc.gnu.org


Since GCC 4.7, the new warning -Wunused-local-typedefs is supported (PR
c++/33255, 2011-09-08); since GCC 4.8 (2012-05-04) it is enabled by -Wall and
-Wunused.


A typedef was used in a compile-time check whether an expression is constant
(compile-time assert). To allow for the new check but selectively disable the
warning for that line, I tried a pragma.


While using #pragma directly works, using _Pragma fails. The following example
shows no warning for "foo" but for "bar" it fails with:

test.cc:19:14: error: typedef ‘myint’ locally defined but not used
[-Werror=unused-local-typedefs]


Expected: _Pragma has the same result as writing #pragma.



#pragma GCC diagnostic error "-Wunused-local-typedefs"

// Works:

void foo ()
{
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
  typedef int myint;
#pragma GCC diagnostic pop
}


// Fails:

#define STRINGIFY(x) #x
#define TEST(x) \
 _Pragma(STRINGIFY(GCC diagnostic ignored "-Wunused-local-typedefs")) \
 typedef int myint;
// _Pragma(STRINGIFY(GCC diagnostic pop))
void bar ()
{
  TEST(myint)
}


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-08-27 15:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-24  9:32 [Bug c++/53469] New: #pragma GCC diagnostic works, but using _Pragma doesn't for -Wunused-local-typedefs burnus at gcc dot gnu.org
2012-05-25 12:54 ` [Bug c++/53469] " dodji at gcc dot gnu.org
2012-05-29 10:25 ` [Bug preprocessor/53469] " dodji at gcc dot gnu.org
2012-08-27 15:42 ` dodji at gcc dot gnu.org
2012-08-27 15:45 ` dodji at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).