https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101186
--- Comment #5 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- Sorry for the slightly different IL. I had altered g() to avoid depending on stdio.h: void g (int a, int b, int x, int y) { int c = y; if (a != 0) c = x; while (b < 1000) // without this loop, jump thread & VRP can remove dead code { if (a != 0) { if (c > x) unreachable(); } else blah(); b++; } }