https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87038
--- Comment #16 from Steinar H. Gunderson <steinar+gcc at gunderson dot no> --- Since you're asking (presumably rhethorically): I would certainly recommend that this code be changed, yes, and I don't find the author's intent obvious at all. The fix that comes to mind is to scope the case clause: void f4(int a) { switch (a) { case 0: { int i = f1(); f3(i); break; } case 1: { int i = f2(); f3(i); break; } } }