https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114551
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The first major difference with/without continue is the moving of `f > (2147483647 - a)` checkout of the loop via lim2 in the case of not having the continue. You can replace the inner most loop with: ``` for (; c < 4; c++) { [[unlikely]]; d = f && a > 0 && f > (2147483647 - a) ? 0 : b[f]; } ``` Also so yes it is the continue predictor that is coming into play.