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)