111
|
1 /* PR middle-end/80809 */
|
|
2 /* { dg-do run } */
|
|
3
|
|
4 __attribute__((noinline, noclone)) void
|
|
5 foo (int x)
|
|
6 {
|
|
7 int i, j, v[x], *w[16];
|
|
8 for (i = 0; i < x; i++)
|
|
9 v[i] = i;
|
|
10 #pragma omp parallel
|
|
11 #pragma omp single
|
|
12 for (i = 0; i < 16; i++)
|
|
13 /* Make sure v is implicitly determined shared in task, because it
|
|
14 is shared on the parallel. */
|
|
15 #pragma omp task private (j)
|
|
16 w[i] = v;
|
|
17 for (i = 0; i < 16; i++)
|
|
18 if (w[i] != v)
|
|
19 __builtin_abort ();
|
|
20 }
|
|
21
|
|
22 int
|
|
23 main ()
|
|
24 {
|
|
25 foo (4);
|
|
26 foo (27);
|
|
27 foo (196);
|
|
28 return 0;
|
|
29 }
|