https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62007
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think the message is correct, or at least the case is highly unclear, the OpenMP 4.0 standard has various unclear corner cases. The thing is, the loop iterator is predetermined linear, and the linear clause makes implicit reference to the outer var, but as linear clause is not allowed on the parallel, it can't be specified there and with default(none) you are requesting that everything is specified there explicitly. I can only suggest using non-combined construct in that case if you for some reason need default(none), say: !$omp parallel private (i_ct) default(none) !$omp do simd do i_ct = 1, 10 ... end do !$omp end parallel or so.