https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101948
Bug ID: 101948 Summary: [OpenMP] gfc_split_omp_clauses + REDUCTION with TASK modifier Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: openmp, rejects-valid Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- I have not checked the spec – nor did I quickly spot in the C/C++ code where it is handled, however, there is a clause splitting differences between Fortran and C, which leads to an error. The C code compiles but Fortran gives: Error: invalid ‘task’ reduction modifier on construct other than ‘parallel’, ‘do’, ‘sections’ or ‘scope’ The Fortran code → (new file, commented; gfortran.dg/gomp/reduction-task-1.f90): !$omp teams distribute parallel do reduction (task, +: v) !$omp end teams distribute parallel do gives /* vvvvv - note task modifier. */ #pragma omp teams reduction(task,+:v) ... #pragma omp parallel reduction(task,+:v) While the C code (from c-c++-common/gomp/reduction-task-1.c): #pragma omp teams distribute parallel for reduction (task, +: v) gives #pragma omp teams reduction(+:v) #pragma omp parallel reduction(task,+:v)