https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93771
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- If t[3] was an unrelated load, then SLP does the correct thing. E.g. void f(double *a, double *t, double *t0, double *d) { double t1 = t[0] + d[0]; double t2 = t0[0] + d[1]; a[0] = t1; a[1] = t2; } Note this was reduced from PR 93720 comment #2.