[Bug c++/103597] New: False -Wimplicit-fallthrough= involving macro

sbergman at redhat dot com gcc-bugzilla@gcc.gnu.org
Tue Dec 7 08:16:00 GMT 2021


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

            Bug ID: 103597
           Summary: False -Wimplicit-fallthrough= involving macro
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sbergman at redhat dot com
  Target Milestone: ---

I think this is a recent regression on GCC 12 trunk (I'm at
basepoints/gcc-12-5818-g30a08286e67; it doesn't happen with e.g.
gcc-c++-11.2.1-1.fc35.x86_64):

> $ cat test.cc
> #define E(c, e) if (c) e
> int f(int n) {
>     switch (n) {
>     case 0:
>         E(true, return 0);
>     case 1:
>         return 1;
>     }
>     return 2;
> }

> $ g++ -c -Wimplicit-fallthrough test.cc
> test.cc: In function ‘int f(int)’:
> test.cc:1:17: warning: this statement may fall through [-Wimplicit-fallthrough=]
>     1 | #define E(c, e) if (c) e
>       |                 ^~
> test.cc:5:9: note: in expansion of macro ‘E’
>     5 |         E(true, return 0);
>       |         ^
> test.cc:6:5: note: here
>     6 |     case 1:
>       |     ^~~~


More information about the Gcc-bugs mailing list