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

            Bug ID: 103289
           Summary: OpenMP: Private Allocatable arrays not allowed inside
                    'parallel' with default(none)
           Product: gcc
           Version: 11.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vzborovsky at gmail dot com
  Target Milestone: ---

Hello, 

This code does not compile:

program t
implicit none
integer, allocatable :: a(:)
integer :: j

!$omp parallel default(none)
!$omp do private(a)
do j = 1, 1000
end do
!$omp end do
!$omp end parallel

end program

Compiler fails with the error:

/app/example.f90:7:19:

    7 | !$omp do private(a)
      |                   ^
Error: 'a' not specified in enclosing 'parallel'
/app/example.f90:6:28:

    6 | !$omp parallel default(none)
      |                            ^
note: enclosing 'parallel'
Compiler returned: 1

The code above was tested against gfortran versions 4.9.4, 7.3.0, 10.2, 11.2.
Versions 4.9.4 and 11.2 were tested at godbolt.org site,
https://godbolt.org/z/caEEsvxc6

All versions above produce the same error.

But the code does compile when:
 a) either I change the type of 'a' variable to fixed-size array
 b) or declare 'a' as private in 'parallel' construct
 c) or use combined 'parallel do' construct
 d) or use Intel Fortran compiler

I have tried to read OpenMP specification but haven't found anything
prohibiting the code above.

With best regards,
Vadim Zborovskii

Reply via email to