1 /* PR middle-end/80809 */
2 /* { dg-do run } */
3 
4 __attribute__((noinline, noclone)) void
foo(int x)5 foo (int x)
6 {
7   int i, v[x], w[16];
8   for (i = 0; i < x; i++)
9     v[i] = i;
10   for (i = 0; i < 16; i++)
11     w[i] = 0;
12 #pragma omp parallel
13 #pragma omp single
14   for (i = 0; i < 16; i++)
15 #pragma omp task firstprivate (v)
16     {
17       int j;
18       for (j = 0; j < x; j++)
19 	v[j] += i;
20       for (j = 0; j < x; j++)
21 	w[i] += v[j];
22     }
23   for (i = 0; i < 16; i++)
24     if (w[i] != (x - 1) * x / 2 + x * i)
25       __builtin_abort ();
26 }
27 
28 int
main()29 main ()
30 {
31   foo (4);
32   foo (27);
33   foo (196);
34   return 0;
35 }
36