https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62217
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Actually it is a bad interaction between DOM and complete unrolling. <bb 20>: # i_14 = PHI <i_36(19)> if (i_14 == b_6(D)) goto <bb 21>; else goto <bb 22>; <bb 21>: g_x[b_6(D)] = *x1_7(D); i_11 = i_14 + 1; goto <bb 3>; <bb 22>: __builtin_unreachable (); --- CUT --- Basic Block 21 should have been a __builtin_unreachable (); also. BB21 was bb5 after dom. BB5 was changed all the way back in dom to: <bb 5>: g_x[b_6(D)] = *x1_7(D); goto <bb 7>; It was before DOM: <bb 5>: g_x[i_14] = *x2_9(D);