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

            Bug ID: 107227
           Summary: Compiler bug in private allocatable array in OpenACC
                    compute statement
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgomp
          Assignee: unassigned at gcc dot gnu.org
          Reporter: shb at gatech dot edu
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

The program below does not compile (nor does any variant of it involving
allocatable statements that I can think of). 
```
program main
integer :: i
real, allocatable :: arr(:)
allocate(arr(10))
!$acc parallel loop private(arr)
do i=1,10
    arr=1.0
end do
end
```

The error is 
```
!$acc parallel loop private(arr)
      |                                ^
internal compiler error: in expand_oacc_for, at omp-expand.cc:7660
```

A version of this suggested by Mat Colgrove also does not work:
```
program main
integer :: i
real, allocatable :: arr(:)
allocate(arr(10))
!$acc parallel loop private(arr(1:10)
do i=1,10
    arr=1.0
end do
end
```

with error

```

    5 | !$acc parallel loop private(arr(1:10))
      |                                1
Error: Syntax error in OpenMP variable list at (1)
```

These appear to be ICE compiler bugs as they are permitted by quite old OpenaCC
standards (and are seemingly typical use cases of OpenACC in Fortran). nvhpc
compilers work fine for this. 

The compile statement is 
`gfortran -foffload-options=-march=gfx90a -fopenacc test.f90`
with offloading onto an AMD MI210.

Reply via email to