https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113281
--- Comment #26 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Edwin Lu from comment #25) > It's still persisting on trunk (at least for pr113281-1.c > https://godbolt.org/z/M9EK44hKe) I looked into what the vectorizer produces: vect__22.13_31 = (vector(8) int) vect_vec_iv_.12_8; _22 = (int) a.4_25; vect__12.14_33 = { 32872, 32872, 32872, 32872, 32872, 32872, 32872, 32872 } >> vect__22.13_31; _12 = 32872 >> _22; vect_b_7.15_34 = (vector(8) short int) vect__12.14_33; that is valid thing to do. That is do the shift in `vector(8) int` and then do a truncation. The issue originally was about doing the shift in `vector(8) short` which is not happening here.