https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77955
--- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Another issue:
markus@x4 /tmp % cat fall.c
void bar(int);
template <typename T> void foo(int i, bool bo) {
switch (i) {
case 1:
if (!bo)
break;
// Fall through.
case 2:
bar(2);
default:
break;
}
}
template void foo<int>(int, bool);
template void foo<void*>(int, bool);
markus@x4 /tmp % g++ -Wimplicit-fallthrough=1 -c fall.c
fall.c: In function ‘void foo(int, bool) [with T = int]’:
fall.c:6:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (!bo)
^~
fall.c:9:3: note: here
case 2:
^~~~
fall.c: In function ‘void foo(int, bool) [with T = void*]’:
fall.c:6:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (!bo)
^~
fall.c:9:3: note: here
case 2:
^~~~