http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56883
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-09 08:25:17 UTC --- This testcase is invalid OpenMP, the loop iteration variables are predetermined private and thus can't be specified in shared clause. That said, void foo (int ***x) { int i, j, k; #pragma omp parallel for for (i = 0; i < 10; ++i) { #pragma omp parallel shared(j) #pragma omp for for (j = 0; j < 10; ++j) { #pragma omp parallel for for (k = 0; k < 10; ++k) x[i][j][k] = k; } } } is valid and still ICEs. Will have a look.