1/* PR other/39591 */
2/* { dg-do run } */
3/* { dg-options "-O2" } */
4
5extern void abort (void);
6
7int err, a[40];
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  int k;
26  for (k = 0; k < sizeof a / sizeof a[0]; k++)
27    a[k] = 0x55555555;
28
29#pragma omp parallel
30  {
31    int i;
32
33#pragma omp for schedule (dynamic)
34    for (i = 0; i < 50; i++)
35      foo (a);
36  }
37  if (err)
38    abort ();
39  return 0;
40}
41