https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98915
Bug ID: 98915
Summary: OpenACC routine with a name directive does not compile
Product: gcc
Version: 10.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: kd486 at cam dot ac.uk
Target Milestone: ---
Created attachment 50106
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50106&action=edit
Module file to reproduce issue
The OpenACC standard states that "The routine directive with a name may appear
in the specification part of a subroutine, function or module, and applies to
the named subroutine or function."
However, the following does not compile with Gfortran:
function modifier(x) result(y)
implicit none
!$acc routine seq
real(kind =8) :: x,y
y = 2 * x
end function modifier
subroutine do_work
implicit none
!$acc routine(modifier) seq
integer(kind = 4) :: i
!$acc parallel loop collapse(3) independent private(i)
do i = 1,q
x(i,j,k) = 23.
x(i,j,k) = modifier(x(i))
end do
end subroutine do_work
gfortran -fopenacc -Wall -Wextra -c mymodule.f90
mymodule.f90:26:35:
26 | !$acc routine(modifier) seq
| 1
Error: Invalid NAME ‘modifier’ in !$ACC ROUTINE ( NAME ) at (1)