| /* PR middle-end/80809 */ | |
| /* { dg-do run } */ | |
| __attribute__((noinline, noclone)) void | |
| foo (int x) | |
| { | |
| int i, j, v[x], *w[16]; | |
| for (i = 0; i < x; i++) | |
| v[i] = i; | |
| #pragma omp parallel | |
| #pragma omp single | |
| for (i = 0; i < 16; i++) | |
| /* Make sure v is implicitly determined shared in task, because it | |
| is shared on the parallel. */ | |
| #pragma omp task private (j) | |
| w[i] = v; | |
| for (i = 0; i < 16; i++) | |
| if (w[i] != v) | |
| __builtin_abort (); | |
| } | |
| int | |
| main () | |
| { | |
| foo (4); | |
| foo (27); | |
| foo (196); | |
| return 0; | |
| } |