1*37234499Sagozillon! Offloading test checking interaction of pointer and target with target where
2*37234499Sagozillon! 3-D bounds have been specified
388234488SEthan Luis McDonough! REQUIRES: flang, amdgpu
4330d8983SJohannes Doerfert
5330d8983SJohannes Doerfert! RUN: %libomptarget-compile-fortran-run-and-check-generic
6330d8983SJohannes Doerfertprogram main
7330d8983SJohannes Doerfert    integer, pointer :: inArray(:,:,:)
8330d8983SJohannes Doerfert    integer, pointer :: outArray(:,:,:)
9330d8983SJohannes Doerfert    integer, target :: in(3,3,3)
10330d8983SJohannes Doerfert    integer, target :: out(3,3,3)
11330d8983SJohannes Doerfert
12330d8983SJohannes Doerfert    inArray => in
13330d8983SJohannes Doerfert    outArray => out
14330d8983SJohannes Doerfert
15330d8983SJohannes Doerfert    do i = 1, 3
16330d8983SJohannes Doerfert      do j = 1, 3
17330d8983SJohannes Doerfert        do k = 1, 3
18330d8983SJohannes Doerfert            inArray(i, j, k) = 42
19330d8983SJohannes Doerfert            outArray(i, j, k) = 0
20330d8983SJohannes Doerfert        end do
21330d8983SJohannes Doerfert       end do
22330d8983SJohannes Doerfert    end do
23330d8983SJohannes Doerfert
24330d8983SJohannes Doerfert!$omp target map(tofrom:inArray(1:3, 1:3, 2:2), outArray(1:3, 1:3, 1:3))
25330d8983SJohannes Doerfert    do j = 1, 3
26330d8983SJohannes Doerfert      do k = 1, 3
27330d8983SJohannes Doerfert        outArray(k, j, 2) = inArray(k, j, 2)
28330d8983SJohannes Doerfert      end do
29330d8983SJohannes Doerfert    end do
30330d8983SJohannes Doerfert!$omp end target
31330d8983SJohannes Doerfert
32330d8983SJohannes Doerfert print *, outArray
33330d8983SJohannes Doerfert
34330d8983SJohannes Doerfertend program
35330d8983SJohannes Doerfert
36330d8983SJohannes Doerfert! CHECK: 0 0 0 0 0 0 0 0 0 42 42 42 42 42 42 42 42 42 0 0 0 0 0 0 0 0 0
37