LWG 3035. std::allocator's constructors should be constexpr
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-aggressive-1.c
blobb18d2cbefa36a1185e4fdf039a831eeb35c4c508
1 /* { dg-require-effective-target vect_condition } */
2 /* { dg-require-effective-target vect_simd_clones } */
3 /* { dg-additional-options "-fopenmp-simd" } */
5 #include "tree-vect.h"
7 #define N 64
8 int a[N];
9 int c[N];
11 __attribute__ ((noinline)) int
12 foo (void)
14 int i, res = 0;
15 #pragma omp simd safelen(8)
16 for (i = 0; i < N; i++)
18 int t = a[i];
19 if (c[i] != 0)
20 if (t != 100 & t > 5)
21 res += 1;
23 return res;
26 __attribute__ ((noinline)) int
27 hundred (void)
29 return 100;
33 int main (void)
35 int i;
37 check_vect ();
39 for (i = 0; i < N; i++)
41 c[i] = i & 1;
42 switch (i & 3)
44 case 0:
45 a[i] = hundred ();
46 break;
47 case 1:
48 a[i] = 1;
49 break;
50 default:
51 a[i] = i + 6;
52 break;
55 if (foo () != 16)
56 abort ();
57 return 0;
60 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */