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)