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)

Reply via email to