| /* { dg-additional-options "-ffast-math" } */ |
| |
| #define N 100 |
| |
| double __attribute__ ((noinline, noclone)) |
| f (double *x, double y) |
| { |
| double a = 0; |
| for (int i = 0; i < N; ++i) |
| { |
| a += y; |
| x[i * 2] += a; |
| x[i * 2 + 1] += a; |
| } |
| return a - y; |
| } |
| |
| double x[N * 2]; |
| |
| int |
| main (void) |
| { |
| if (f (x, 5) != (N - 1) * 5) |
| __builtin_abort (); |
| return 0; |
| } |
| |
| /* { dg-final { scan-tree-dump "Loop contains only SLP stmts" "vect" { target vect_double } } } */ |
| /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_double } } } */ |