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>

Reply via email to