| ! { 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 |