/* { dg-do compile } */ /* { dg-require-effective-target vect_double } */ double x[1024]; void bar (void); void foo (void) { double tem1 = x[0]; double tem2 = x[1]; for (int i = 0; i < 511; ++i) { x[2*i] = tem1; x[2*i+1] = tem2; bar (); tem1 = x[2*(i+1)]; tem2 = x[2*(i+1)+1]; } } /* We should be able to vectorize the cycle in one SLP attempt including both load groups. */ /* { dg-final { scan-tree-dump-times "transform load" 2 "slp1" } } */ /* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" } } */