https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108164
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- We vectorize <bb 3> [local count: 955630225]: # f_33 = PHI <f_27(16), f_36(13)> f.1_1 = (unsigned short) f_33; _2 = f.1_1 + 1; f_27 = (short int) _2; if (f_27 >= -1) goto <bb 16>; [89.00%] else goto <bb 18>; [11.00%] <bb 16> [local count: 850510901]: goto <bb 3>; [100.00%] <bb 18> [local count: 105119324]: # f_94 = PHI <f_27(3)> as _70 = (unsigned short) f_36; _69 = _70 + 1; _68 = _70 + 2; _67 = _70 + 3; _66 = _70 + 4; _65 = _70 + 5; _64 = _70 + 6; _63 = _70 + 7; _62 = {_70, _69, _68, _67, _66, _65, _64, _63}; _61 = (vector(8) short int) _62; <bb 3> [local count: 567644343]: # f_33 = PHI <f_27(16), f_36(23)> # vect_vec_iv_.21_59 = PHI <_56(16), _61(23)> # ivtmp_49 = PHI <ivtmp_48(16), 0(23)> _58 = (vector(8) unsigned short) vect_vec_iv_.21_59; _57 = _58 + { 8, 8, 8, 8, 8, 8, 8, 8 }; _56 = (vector(8) short int) _57; vect_f.22_55 = VIEW_CONVERT_EXPR<vector(8) unsigned short>(vect_vec_iv_.21_59); f.1_1 = (unsigned short) f_33; vect__2.23_53 = vect_f.22_55 + { 1, 1, 1, 1, 1, 1, 1, 1 }; _2 = f.1_1 + 1; vect_f_27.24_52 = VIEW_CONVERT_EXPR<vector(8) short int>(vect__2.23_53); f_27 = (short int) _2; ivtmp_48 = ivtmp_49 + 1; if (ivtmp_48 < bnd.18_75) goto <bb 16>; [83.33%] else goto <bb 25>; [16.67%] <bb 16> [local count: 473036953]: goto <bb 3>; [100.00%] <bb 25> [local count: 94607391]: # vect_f_27.24_51 = PHI <vect_f_27.24_52(3)> _50 = BIT_FIELD_REF <vect_f_27.24_51, 16, 112>; that looks wrong.