public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/101948] New: [OpenMP] gfc_split_omp_clauses + REDUCTION with TASK modifier
@ 2021-08-17 12:32 burnus at gcc dot gnu.org
  2021-08-17 12:42 ` [Bug fortran/101948] " jakub at gcc dot gnu.org
  0 siblings, 1 reply; 2+ messages in thread
From: burnus at gcc dot gnu.org @ 2021-08-17 12:32 UTC (permalink / raw)
  To: gcc-bugs

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)

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug fortran/101948] [OpenMP] gfc_split_omp_clauses + REDUCTION with TASK modifier
  2021-08-17 12:32 [Bug fortran/101948] New: [OpenMP] gfc_split_omp_clauses + REDUCTION with TASK modifier burnus at gcc dot gnu.org
@ 2021-08-17 12:42 ` jakub at gcc dot gnu.org
  0 siblings, 0 replies; 2+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-08-17 12:42 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101948

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Clauses on Combined and Composite Constructs
section says:
"If the task reduction-modifier is specified, the effect is as if it only
modifies the behavior of the reduction clause on the innermost leaf
construct that accepts the modifier."
and c-omp.c (c_omp_split_clauses) implements that, first it does some
diagnostics in the if (OMP_CLAUSE_REDUCTION_TASK (clauses)) and later on
does not copy OMP_CLAUSE_REDUCTION_TASK to the duplicates of the clause.
task modifier is allowed only on parallel, worksharing-loop and sections (and
scope, but that isn't combined with anything) and is disallowed on anything
combined with simd or loop, so effectively we know that the innermost construct
will handle it and the others will not have the flag set.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-08-17 12:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-17 12:32 [Bug fortran/101948] New: [OpenMP] gfc_split_omp_clauses + REDUCTION with TASK modifier burnus at gcc dot gnu.org
2021-08-17 12:42 ` [Bug fortran/101948] " jakub at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).