/* PR other/39591 */ /* { dg-do run } */ /* { dg-options "-O2" } */ extern void abort (void); int err, a[40]; void __attribute__((noinline)) foo (int *array) { #pragma omp task { int j; for (j = 0; j < sizeof array / sizeof array[0]; j++) if (array[j] != 0x55555555) #pragma omp atomic err++; } } int main (void) { int k; for (k = 0; k < sizeof a / sizeof a[0]; k++) a[k] = 0x55555555; #pragma omp parallel { int i; #pragma omp for schedule (dynamic) for (i = 0; i < 50; i++) foo (a); } if (err) abort (); return 0; }