https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80460
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2017-04-19 Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> --- I think it shouldn't affect those at all. Another idea is to return fake FALLTHROUGH () if the else branch is dead. Let me see. extern void die (void) __attribute__((noreturn)); extern void nop (void); void f (int i) { switch (i) { case 0: if (1) die (); else nop (); case 1:; i++; } switch (i) { case 0: if (0) die (); else nop (); case 1:; i++; } switch (i) { case 0: if (1) nop (); else die (); case 1:; i++; } switch (i) { case 0: if (0) nop (); else die (); case 1:; i++; } }