| /* PR other/39591 */ | |
| /* { dg-do run } */ | |
| 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; | |
| } |