https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103063
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- ifcvt dump looks correct to me, in vect it seems the vectorizer thinks it can compute the number of iterations of the inner loop using: _33 = b_lsm.8_5 * 6; _34 = _33 / 6; niters.11_32 = _34 + 1; _42 = b_lsm.8_5 * 6; if (_42 <= 89) For b_lsm.8_5 == 0 niters.11_32 is correctly 1, but for b_lsm.8_5 == 255 it gives 42 (i.e. (0x5fa & 0xff) / 6 + 1), while it should be 128, because the only [0,255] values for which (v*6) & 0xff == 0 are 0 and 128.