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