1 /* PR other/39591 */
2 /* { dg-do run } */
3 
4 extern void abort (void);
5 
6 int e, a[40];
7 
8 void __attribute__((noinline))
foo(int * array)9 foo (int *array)
10 {
11 #pragma omp task
12   {
13     int j;
14     for (j = 0; j < 40; j++)
15       if (array[j] != 0x55555555)
16 #pragma omp atomic
17 	e++;
18   }
19 }
20 
21 int
main(void)22 main (void)
23 {
24   int k;
25   for (k = 0; k < sizeof a / sizeof a[0]; k++)
26     a[k] = 0x55555555;
27 
28 #pragma omp parallel
29   {
30     int i;
31 
32 #pragma omp for schedule (dynamic)
33     for (i = 0; i < 50; i++)
34       foo (a);
35   }
36   if (e)
37     abort ();
38   return 0;
39 }
40