https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92131
--- Comment #8 from Armin Rigo <arigo at tunes dot org> --- I'd like to point out that the problem only shows up with all the extra lines of code that appear unrelated: everything before the loop, and the first half of the loop itself (the switch-with-goto with cases 8 and 4). For example, we can't remove any if in the chain "if(i) if(g) if(h) if(e)". And we can't replace "goto bh;" with the apparently equivalent "break;".