! RUN: bbc -emit-hlfir -fcuda -gpu=managed %s -o - | FileCheck %s
module matching
interface host_and_device
module procedure sub_host
module procedure sub_device
end interface
interface all
module procedure sub_host
module procedure sub_device
module procedure sub_managed
module procedure sub_unified
end interface
interface all_without_managed
module procedure sub_host
module procedure sub_device
module procedure sub_unified
end interface
contains
subroutine sub_host(a)
integer :: a(:)
end
subroutine sub_device(a)
integer, device :: a(:)
end
subroutine sub_managed(a)
integer, managed :: a(:)
end
subroutine sub_unified(a)
integer, unified :: a(:)
end
end module
program m
use matching
integer, allocatable :: actual_host(:)
allocate(actual_host(10))
call host_and_device(actual_host) ! Should resolve to sub_device
call all(actual_host) ! Should resolved to unified
call all_without_managed(actual_host) ! Should resolved to managed
end
! CHECK: fir.call @_QMmatchingPsub_device
! CHECK: fir.call @_QMmatchingPsub_managed
! CHECK: fir.call @_QMmatchingPsub_unified