| ! RUN: %flang_fc1 -x cuda -fdebug-unparse %s | FileCheck %s |
| |
| module matching |
| interface sub |
| module procedure sub_host |
| module procedure sub_device |
| module procedure sub_managed |
| 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, pinned, allocatable :: a(:) |
| integer, managed, allocatable :: b(:) |
| integer, unified, allocatable :: u(:) |
| integer, device :: d(10) |
| logical :: plog |
| allocate(a(100), pinned = plog) |
| allocate(b(200)) |
| allocate(u(100)) |
| |
| call sub(a) ! Should resolve to sub_host |
| call sub(b) ! Should resolve to sub_managed |
| call sub(u) ! Should resolve to sub_unified |
| call sub(d) ! Should resolve to sub_device |
| |
| end |
| |
| ! CHECK: CALL sub_host |
| ! CHECK: CALL sub_managed |
| ! CHECK: CALL sub_unified |
| ! CHECK: CALL sub_device |