https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65930
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- Note the tricky part is not so much the loop vectorization (teaching reduction path support about the conversion is not difficult with the twist that we need to handle conversions as reduction code...) but the vector epilogue which does the lane reduction in signed int exposing undefined overflow issues. Of course the vectorizer doesn't seem to care here anyways and vectorizes signed integer reductions without caring for that specific issue... In general feeding the conversion as reduction operation through the vectorizer is a bit awkward so pattern-recognizing this as int tem = (int)x[i]; sum += tem; would be easier given we seem to ignore the undefined overflow issues...