https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77399
--- Comment #1 from Alexander Monakov <amonakov at gcc dot gnu.org> --- I should also mention that for scalar code: void f(float *o, int *i) { *o++ = *i++; *o++ = *i++; *o++ = *i++; *o++ = *i++; } where SLP vectorization succeeds, one can see that c-style casts exist for vector types on gimple: vect__5.14_18 = (vector(4) float) vect__4.13_17; So ideally that's how the vector cast should have been lowered to gimple in the original testcase?