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

            Bug ID: 106846
           Summary: [OpenMP][5.1] Permit 'declare target' with clauses
                    inside INTERFACE
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Keywords: openmp, rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
  Target Milestone: ---

This is target_task_reduction.1.f90 from the OpenMP examples document; it is
5.2 (due to 'enter') but it applies already to 5.1:

   interface
      subroutine device_compute(res)
      !$omp declare target enter(device_compute)
        integer :: res
      end subroutine device_compute
      ! ...
   end interface

is rejected with:
  Error: Only the !$OMP DECLARE TARGET form without clauses is allowed in
         interface block at (1)

That's based on OpenMP 5.0's
• Any declare target directive with clauses must appear in a specification part
of a
  subroutine subprogram, function subprogram, program or module.
• Any declare target directive without clauses must appear in a specification
part of a
  subroutine subprogram, function subprogram or interface body to which it
applies.

However, that is gone with OpenMP 5.1 and later.

Reply via email to