| implicit none |
| type t |
| integer :: dummy |
| integer, pointer :: p1(:), p2(:) |
| integer :: dummy2 |
| end type t |
| type(t) :: var |
| integer :: i |
| allocate(var%p1(5),var%p2(2:4)) |
| var%p1 = [22,53,28,6,4] |
| var%p2 = [46,679,54] |
| |
| !$omp target enter data map(to:var%p1, var%p2) |
| !$omp target |
| if (.not.associated(var%p1).or.lbound(var%p1,1)/=1.or.ubound(var%p1,1)/=5) stop 1 |
| if (.not.associated(var%p2).or.lbound(var%p2,1)/=2.or.ubound(var%p2,1)/=4) stop 2 |
| if (any (var%p1 /= [22,53,28,6,4])) stop 3 |
| if (any (var%p2 /= [46,679,54])) stop 4 |
| !$omp end target |
| !$omp target exit data map(from:var%p1, var%p2) |
| end |
| |