dwarf2out: Fix ICE on large _BitInt in loc_list_from_tree_1 [PR113637]
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / target-in-reduction-1.C
blob21130f5bb8206ebf89073af5e5a45dd1649e9280
1 void
2 foo (int &x, int *&y, int n, int v)
4   int zu[3] = { 45, 46, 47 };
5   int uu[n], wu[n], i;
6   int (&z)[3] = zu;
7   int (&u)[n] = uu;
8   int (&w)[n] = wu;
9   for (i = 0; i < n; i++)
10     w[i] = u[i] = n + i;
11   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
12   {
13     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
14     {
15       x++;
16       y[0] += 2;
17       y[1] += 3;
18       z[1] += 4;
19       u[0] += 5;
20       w[1] += 6;
21     }
22     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
23     {
24       x += 4;
25       y[0] += 5;
26       y[1] += 6;
27       z[2] += 7;
28       u[1] += 8;
29       w[2] += 7;
30     }
31     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
32     {
33       x += 9;
34       y[0] += 10;
35       y[1] += 11;
36       z[1] += 12;
37       u[2] += 13;
38       w[1] += 14;
39     }
40   }
41   if (x != 56 || y[0] != 60 || y[1] != 64)
42     __builtin_abort ();
43   if (z[0] != 45 || z[1] != 62 || z[2] != 54)
44     __builtin_abort ();
45   if (u[0] != 8 || u[1] != 12 || u[2] != 18)
46     __builtin_abort ();
47   if (w[0] != 3 || w[1] != 24 || w[2] != 12)
48     __builtin_abort ();
51 void
52 bar (int &x, int *&y, int n, int v)
54   int zu[3] = { 45, 46, 47 };
55   int uu[n], wu[n], i;
56   int (&z)[3] = zu;
57   int (&u)[n] = uu;
58   int (&w)[n] = wu;
59   for (i = 0; i < n; i++)
60     w[i] = u[i] = n + i;
61   #pragma omp parallel master
62   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
63   {
64     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
65     {
66       x++;
67       y[0] += 2;
68       y[1] += 3;
69       z[1] += 4;
70       u[0] += 5;
71       w[1] += 6;
72     }
73     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
74     {
75       x += 4;
76       y[0] += 5;
77       y[1] += 6;
78       z[2] += 7;
79       u[1] += 8;
80       w[2] += 7;
81     }
82     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
83     {
84       x += 9;
85       y[0] += 10;
86       y[1] += 11;
87       z[1] += 12;
88       u[2] += 13;
89       w[1] += 14;
90     }
91   }
92   if (x != 56 || y[0] != 77 || y[1] != 84)
93     __builtin_abort ();
94   if (z[0] != 45 || z[1] != 62 || z[2] != 54)
95     __builtin_abort ();
96   if (u[0] != 8 || u[1] != 12 || u[2] != 18)
97     __builtin_abort ();
98   if (w[0] != 3 || w[1] != 24 || w[2] != 12)
99     __builtin_abort ();
103 main ()
105   int x = 42;
106   int yu[2] = { 43, 44 };
107   int *y = yu;
108   #pragma omp parallel master
109   foo (x, y, 3, 2);
110   x = 42;
111   bar (x, y, 3, 2);
112   return 0;