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

            Bug ID: 92920
           Summary: [OpenMP][OpenACC] Implicit mapping of character
                    scalars (nonalloc/nonptr) – shall be firstprivate not
                    tofrom
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: openacc, openmp
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
  Target Milestone: ---

Related: PR 92568 and possibly PR 92568.

Per OpenMP 4.5, just before 2.15.5.1 or OpenMP 5, 2.19.7,
https://www.openmp.org/spec-html/5.0/openmpsu109.html#x142-6180002.19.7

Implicit mapping of scalar variables uses firstprivate, unless they have the
(OpenMP 5:) allocatable or pointer attribute or (OpenMP 4.5 or 5:) the
defaultmap clause says something different.

Currently, gfortran handles character strings as non-scalar:

character :: c
c = 'a'
!$omp target
  c = 'b'
!$omp end target
print *, c  ! shows 'b' due to 'tofrom' mapping; instead of 'a' w/ firstprivate
end


OpenACC 2.7 has in "2.5.2. Kernels Construct":
"A scalar variable referenced in the kernels construct that does not appear in
a data clause for the construct or any enclosing data construct will be treated
as if it appeared in a copy clause."

Reply via email to