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