PR tree-optimization/84740
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-reduc-11.c
blob5906f23690d08404279b4e7fb4197b7685a4d592
1 /* { dg-require-effective-target vect_int } */
3 #include "tree-vect.h"
5 int x[1024], y[1024], z[1024];
7 int __attribute__((noinline,noclone))
8 foo (int n)
10 int sum = 0;
11 /* Can vectorize this. */
12 for (int i = 0; i < n; ++i)
13 sum = (y[i] - (x[i] - sum));
14 return sum;
17 int __attribute__((noinline,noclone))
18 bar (int n)
20 int sum = 0;
21 /* Cannot vectorize this, sum is negated. */
22 for (int i = 0; i < n; ++i)
23 sum = z[i] - (y[i] - (x[i] - sum));
24 return sum;
27 int
28 main()
30 check_vect ();
31 for (int i = 0; i < 1024; ++i)
33 x[i] = i;
34 y[i] = i + 1;
35 z[i] = 0;
36 __asm__ volatile ("" : : : "memory");
38 if (foo (1024) != 1024)
39 __builtin_abort ();
40 if (bar (1023) != -1 || bar (1024) != 0)
41 __builtin_abort ();
42 return 0;
45 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */