https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95857
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Slightly simplified: struct E { int e; }; int bar (void), baz (void); void foo (void) { struct E a = { 0 }; struct E i = { 0 }; if (baz ()) i.e = 1; else a.e = -2; switch (a.e) { case -2: lab1: switch (i.e) { case -3: case 2: if (i.e-- != 2) __builtin_unreachable (); (void) &&lab2; lab2: baz (); goto lab1; case 0: bar (); } } }