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))
       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
      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  }