https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88967
Bug ID: 88967 Summary: [9 regression] openmp default(none) broken Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: objc Assignee: unassigned at gcc dot gnu.org Reporter: lebedev.ri at gmail dot com Target Milestone: --- https://godbolt.org/z/8WHddH void foo(int *x); void test1(int * const begin, const int len) { #pragma omp parallel default(none) #pragma omp for for(int x = 0; x < len; x++) foo(begin + x); } gcc 8.2, clang trunk is ok with that code. gcc trunk says: <source>: In function 'void test1(int*, int)': <source>:5:9: error: 'len' not specified in enclosing 'parallel' 5 | #pragma omp for | ^~~ <source>:4:9: error: enclosing 'parallel' 4 | #pragma omp parallel default(none) | ^~~ <source>:7:9: error: 'begin' not specified in enclosing 'parallel' 7 | foo(begin + x); | ^~~~~ <source>:4:9: error: enclosing 'parallel' 4 | #pragma omp parallel default(none) | ^~~ Compiler returned: 1 Since 'default(none)' is specified, i fail to see how they are not specified.. I'm also not really seeing the reasoning in the openmp 4.0 "2.14.3.1 default clause". Did this change in newer openmp versions?