https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122261
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
IIRC store-merging doesn't handle aggregate copies either:
struct Wrapper { int t; };
struct S1 { Wrapper a; Wrapper b; };
void f(S1& s1, const S1& s2 ) {
s1.a = s2.a;
s1.b = s2.b;
}
to make it fit 64bits. For the vectorizer
t.c:5:10: missed: not vectorized: more than one data ref in stmt: s1_2(D)->a =
s2_3(D)->a;
is the main thing to overcome. Aggregate types might be possible to handle
when we get support for re-vectorizing pre-vectorized code.