https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109316

            Bug ID: 109316
           Summary: incorrect "warning: declaration does not declare
                    anything" for anonymous enums in structs, for
                    -std=(gnu|c)-17
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jason.vas.dias at gmail dot com
  Target Milestone: ---

Just a niggle:

I don't think this code should produce a warning,
but under GCC 12, with -std=gnu17 or -std=c17,
or without any '-std=' setting in C language mode,
 it does:

 'struct S { int a; enum { S_O_a = 0 }; }'; 

/tmp/b.c:1:37: warning: declaration does not declare anything
    1 | struct S { int a; enum { S_O_a = 0 }; };
      |

Yes, I know the enumeration declaration does not 
add anything to the struct declaration, (intentionally!),
but in fact GCC HAS inserted DWARF debuginfo for the
enumerator 'S_O_a' in the debug_info section , which
can be used by code in which case the constant is 
interpolated into the output machine code, so something
HAS been declared here ...

Reply via email to