https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61383
--- Comment #3 from Marc Glisse <glisse at gcc dot gnu.org> --- This very minor variant also misbehaves with 4.7 and 4.6, so before my patch. An unsafe instruction (1%f) is taken out of a branch in ifcombine. int a, b = 1, c, d, e, f, g; int fn1 () { int h; for (;;) { g = b; g = g ? 0 : 1 % g; e = a + 1; for (; d < 1; d = e) { if (f == 0) h = 0; else h = 1 % f; if (f < 1) c = 0; else if (h) break; } if (b) return 0; } } int main () { fn1 (); return 0; }