1*37234499Sagozillon! Offloading test checking interaction of allocatables with multi-dimensional
2*37234499Sagozillon! bounds (3-D in this case) and a target region
388234488SEthan Luis McDonough! REQUIRES: flang, amdgpu
4330d8983SJohannes Doerfert
5330d8983SJohannes Doerfert! RUN: %libomptarget-compile-fortran-run-and-check-generic
6330d8983SJohannes Doerfertprogram main
7330d8983SJohannes Doerfert    integer, allocatable :: inArray(:,:,:)
8330d8983SJohannes Doerfert    integer, allocatable :: outArray(:,:,:)
9330d8983SJohannes Doerfert
10330d8983SJohannes Doerfert    allocate(inArray(3,3,3))
11330d8983SJohannes Doerfert    allocate(outArray(3,3,3))
12330d8983SJohannes Doerfert
13330d8983SJohannes Doerfert    do i = 1, 3
14330d8983SJohannes Doerfert      do j = 1, 3
15330d8983SJohannes Doerfert        do k = 1, 3
16330d8983SJohannes Doerfert            inArray(i, j, k) = 42
17330d8983SJohannes Doerfert            outArray(i, j, k) = 0
18330d8983SJohannes Doerfert        end do
19330d8983SJohannes Doerfert       end do
20330d8983SJohannes Doerfert    end do
21330d8983SJohannes Doerfert
22330d8983SJohannes Doerfert!$omp target map(tofrom:inArray(1:3, 1:3, 2:2), outArray(1:3, 1:3, 1:3))
23330d8983SJohannes Doerfert    do j = 1, 3
24330d8983SJohannes Doerfert      do k = 1, 3
25330d8983SJohannes Doerfert        outArray(k, j, 2) = inArray(k, j, 2)
26330d8983SJohannes Doerfert      end do
27330d8983SJohannes Doerfert    end do
28330d8983SJohannes Doerfert!$omp end target
29330d8983SJohannes Doerfert
30330d8983SJohannes Doerfertprint *, outArray
31330d8983SJohannes Doerfert
32330d8983SJohannes Doerfertdeallocate(inArray)
33330d8983SJohannes Doerfertdeallocate(outArray)
34330d8983SJohannes Doerfert
35330d8983SJohannes Doerfertend program
36330d8983SJohannes Doerfert
37330d8983SJohannes 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
38