6 integer, pointer :: arr(:)
14 integer, target
:: arr1(10)
15 integer, target
:: arr2(10)
16 integer, target
:: arr3(10)
17 type(G
), dimension(3) :: gvar
32 ! Here 'gvar(i)' and 'gvar(j)' are the same element, so this should work.
33 ! This generates a whole-array mapping for gvar(i)%arr, but with the
34 ! "runtime implicit" bit set so the smaller subarray gvar(j)%arr(1:5) takes
37 !$omp target map(gvar(i)%arr, gvar(j)%arr(1:5))
38 gvar(i
)%arr(1) = gvar(i
)%arr(1) + 1
39 gvar(j
)%arr(1) = gvar(j
)%arr(1) + 2
42 !$omp target map(gvar(i)%arr(1:5), gvar(j)%arr)
43 gvar(i
)%arr(1) = gvar(i
)%arr(1) + 3
44 gvar(j
)%arr(1) = gvar(j
)%arr(1) + 4
47 ! For these ones, we know the array index is the same, so we can just
48 ! drop the whole-array mapping.
50 !$omp target map(gvar(i)%arr, gvar(i)%arr(1:5))
51 gvar(i
)%arr(1) = gvar(i
)%arr(1) + 1
52 gvar(i
)%arr(1) = gvar(j
)%arr(1) + 2
55 !$omp target map(gvar(i)%arr(1:5), gvar(i)%arr)
56 gvar(i
)%arr(1) = gvar(i
)%arr(1) + 3
57 gvar(i
)%arr(1) = gvar(j
)%arr(1) + 4
60 if (gvar(1)%arr(1).ne
.20) stop 1