/* 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; | |
} |