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)

Reply via email to