https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101653
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed, ivcannon is turning the loops into: <bb 2> [local count: 79093198]: goto <bb 6>; [100.00%] <bb 4> [local count: 357878150]: a_8 = a_11 + 1; c_14 = c_3 + 2; goto <bb 6>; [100.00%] <bb 5> [local count: 79093198]: # _5 = PHI <123(6)> return _5; <bb 6> [local count: 375401868]: # c_3 = PHI <1(2), c_14(4)> # a_11 = PHI <0(2), a_8(4)> # ivtmp_20 = PHI <2(2), ivtmp_1(4)> c_6 = c_3 + 1; ivtmp_1 = ivtmp_20 - 1; if (ivtmp_1 == 0) goto <bb 5>; [5.50%] else goto <bb 4>; [94.50%] Removing all of the if conditions on c < a and turning it into true ...