// PR c++/77886 // { dg-do compile } // { dg-options "-Wimplicit-fallthrough" } template int foo (int x, int y) { switch (x) { case 1: x++; // { dg-bogus "this statement may f\[ahlotu\]*gh" } // FALLTHROUGH case 2: x++; break; case 3: x++; // { dg-bogus "this statement may f\[ahlotu\]*gh" } // FALLTHROUGH lab: case 4: x++; break; case 5: x++; // { dg-bogus "this statement may f\[ahlotu\]*gh" } // FALLTHROUGH default: x++; break; case 26: goto lab; } #if __cplusplus >= 201103L switch (y) { case 1: y++; // { dg-bogus "this statement may f\[ahlotu\]*gh" } [[fallthrough]]; case 2: y++; break; case 3: y++; // { dg-bogus "this statement may f\[ahlotu\]*gh" } [[fallthrough]]; lab2: case 4: y++; break; case 5: y++; // { dg-bogus "this statement may f\[ahlotu\]*gh" } [[fallthrough]]; default: y++; break; case 26: goto lab2; } #endif return x + y; } int bar (int x, int y) { return foo<0> (x, y); }