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.

Reply via email to