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