1 /* { dg-additional-options "-fopenmp-simd" } */
2 /* { dg-additional-options "-mavx" { target avx_runtime } } */
3
4 #include "tree-vect.h"
5
6 #define N 1024
7 int a[N];
8 int x;
9
10 __attribute__((noipa)) int
11 bar (void)
12 {
13 return x;
14 }
15
16 __attribute__((noipa)) void
17 foo (void)
18 {
19 #pragma omp simd if (bar ())
20 for (int i = 0; i < N; ++i)
21 a[i] = a[i] + 1;
22 }
23
24 __attribute__((noipa)) void
25 baz (void)
26 {
27 int c = 0;
28 #pragma omp simd if (c)
29 for (int i = 0; i < N; ++i)
30 a[i] = a[i] + 1;
31 }
32
33 __attribute__((noipa)) void
34 qux (void)
35 {
36 int c = 1;
37 #pragma omp simd if (c)
38 for (int i = 0; i < N; ++i)
39 a[i] = a[i] + 1;
40 }
41
42 int
43 main ()
44 {
45 check_vect ();
46 foo ();
47 for (int i = 0; i < N; ++i)
48 if (a[i] != 1)
49 abort ();
50 x = 1;
51 foo ();
52 for (int i = 0; i < N; ++i)
53 if (a[i] != 2)
54 abort ();
55 baz ();
56 for (int i = 0; i < N; ++i)
57 if (a[i] != 3)
58 abort ();
59 qux ();
60 for (int i = 0; i < N; ++i)
61 if (a[i] != 4)
62 abort ();
63 return 0;
64 }