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