1 /* PR middle-end/80809 */ 2 /* { dg-do run } */ 3 4 __attribute__((noinline, noclone)) void foo(int x)5foo (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()29main () 30 { 31 foo (4); 32 foo (27); 33 foo (196); 34 return 0; 35 } 36