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

            Bug ID: 104621
           Summary: [OpenMP] Issues with 'declare variant'
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid, openmp
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

The following seems to be invalid - but is accepted:

program main
  interface
    subroutine foo
    end subroutine
    subroutine bar
    end subroutine
  end interface
  !$omp declare variant (foo) &
  !$omp & match (implementation={atomic_default_mem_order(seq_cst)})
end

Reason:
* Any declare variant directive must appear in the specification part of a
subroutine
  subprogram, function subprogram, or interface body to which it applies.

 * * *

The spec itself is odd regarding placing the 'declare variant' inside interface
block (but outside an interface body) – and the rules about the base-name are
also odd. I filled the OpenMP Spec Issue #3241 to track the spec issues.

Reply via email to