blob: b0917d0bc9d74561b5e9fbf7f17cf0b9ce63df46 [file] [edit]
! RUN: %flang_fc1 -emit-fir -fopenmp -fopenmp-version=51 %s -o - | FileCheck %s
! RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=51 %s -o - | FileCheck %s
! The base and its variant are both external procedures (same visibility), so
! the variant is accessible at every reference to the base.
! CHECK-LABEL: func.func @_QPtest_vendor_llvm
! CHECK: fir.call @_QPvllvm(){{.*}}: () -> ()
! CHECK-NOT: fir.call @_QPbase_llvm
subroutine test_vendor_llvm
call base_llvm()
end subroutine test_vendor_llvm
subroutine base_llvm
interface
subroutine vllvm()
end subroutine
end interface
!$omp declare variant (base_llvm:vllvm) match (implementation={vendor(llvm)})
end subroutine base_llvm
! An unknown vendor does not match: the base call is kept.
! CHECK-LABEL: func.func @_QPtest_vendor_unknown
! CHECK: fir.call @_QPbase_unknown(){{.*}}: () -> ()
! CHECK-NOT: fir.call @_QPvunknown
subroutine test_vendor_unknown
call base_unknown()
end subroutine test_vendor_unknown
subroutine base_unknown
interface
subroutine vunknown()
end subroutine
end interface
!$omp declare variant (base_unknown:vunknown) match (implementation={vendor("unknown")})
end subroutine base_unknown