https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99007
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- And allocate clause isn't needed either, this ICEs since r9-3941-g28567c40e2c7c88e424283e8a1a6ff8cb7ba440c when host teams has been introduced: int bar (int n) { int s[n]; int i, j; for (i = 0; i < n; i++) s[i] = 0; #pragma omp teams distribute parallel for reduction(+:s) private (j) for (i = 0; i < 8; i++) for (j = 0; j < n; j++) s[j] += i; return s[0] + s[n - 1]; } and int bar (int n) { int s[n]; int i, j; for (i = 0; i < n; i++) s[i] = 0; #pragma omp parallel reduction(+:s) num_threads(2) #pragma omp parallel for reduction(+:s) private (j) for (i = 0; i < 8; i++) for (j = 0; j < n; j++) s[j] += i; return s[0] + s[n - 1]; } ICEs since r7-536-g381cdae49785fc4b1941a6b37bad3e8c6f3f428d