blob: 6b17b1dbbc920ffc3f4405dcc30707944102d8a7 [file] [log] [blame]
! { dg-do run }
! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } }
program map_multi
use openacc
implicit none
integer, parameter :: n = 512
integer, allocatable :: a(:), b(:), c(:)
allocate(a(1:n))
allocate(b(1:n))
allocate(c(1:n))
!$acc data copy(a, b, c)
! These arrays have descriptors, so use multiple mappings. Make sure those
! are matched up properly with the mappings in the enclosing data region.
!$acc enter data copyin(a)
!$acc enter data copyin(b)
!$acc enter data copyin(c)
!$acc end data
if (.not.acc_is_present (a)) stop 1
if (.not.acc_is_present (b)) stop 2
if (.not.acc_is_present (c)) stop 3
!$acc exit data delete(a)
if (acc_is_present (a)) stop 4
if (.not.acc_is_present (b)) stop 5
if (.not.acc_is_present (c)) stop 6
!$acc exit data delete(b)
if (acc_is_present (a)) stop 7
if (acc_is_present (b)) stop 8
if (.not.acc_is_present (c)) stop 9
!$acc exit data delete(c)
if (acc_is_present (a)) stop 10
if (acc_is_present (b)) stop 11
if (acc_is_present (c)) stop 12
deallocate(a)
deallocate(b)
deallocate(c)
end program map_multi