/* { dg-do compile } */ /* { dg-require-effective-target vect_double } */ double a[2], b[2]; void foo(double x, double y) { double breakme1 = y + 3.; double a1 = b[1] + 2.; double breakme0 = x; double a0 = b[0] + 1.; a[0] = a0 * breakme0; a[1] = a1 * breakme1; } /* We should vectorize the SLP opportunity starting from the grouped store to a[] including the load from b[] at the leaf even though the multiplication requires another vector invariant to be built. */ /* { dg-final { scan-tree-dump "transform load" "slp2" } } */