https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94675
--- Comment #9 from Jeffrey A. Law <law at redhat dot com> --- Yea, unrolling and the array-bounds warning do have bad interactions. I suspect if we cleaned up this block that the backwards threader would likely kick in: # iftmp.2_18 = PHI <1(3), 1(4), 0(5)> _19 = (_Bool) iftmp.2_18; _2 = ~_19; _3 = (long int) _2; _4 = __builtin_expect (_3, 0); if (_4 == 0) goto <bb 7>; [INV] else goto <bb 8>; [INV] I'll play with that and see if there's something we can do cleanly early enough to matter.