https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91526
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- >Interestingly, even if the __restrict__ attribute is removed, it still gets >vectorized. Is this correct behavior? Yes as v1->v[0] cannot be the same as v2->v[1] or result->v[1], etc. due to the full object v1 can either be a fully different object or the same object as result but not overlapping objects.