diff options
Diffstat (limited to 'offload/test/offloading/fortran/target-map-allocatable-array-section-3d-bounds.f90')
| -rw-r--r-- | offload/test/offloading/fortran/target-map-allocatable-array-section-3d-bounds.f90 | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/offload/test/offloading/fortran/target-map-allocatable-array-section-3d-bounds.f90 b/offload/test/offloading/fortran/target-map-allocatable-array-section-3d-bounds.f90 new file mode 100644 index 000000000000..0786e0fd744e --- /dev/null +++ b/offload/test/offloading/fortran/target-map-allocatable-array-section-3d-bounds.f90 @@ -0,0 +1,44 @@ +! Offloading test checking interaction of allocatables +! with multi-dimensional bounds (3-D in this case) and +! a target region +! REQUIRES: flang, amdgcn-amd-amdhsa +! UNSUPPORTED: nvptx64-nvidia-cuda +! UNSUPPORTED: nvptx64-nvidia-cuda-LTO +! UNSUPPORTED: aarch64-unknown-linux-gnu +! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO +! UNSUPPORTED: x86_64-pc-linux-gnu +! UNSUPPORTED: x86_64-pc-linux-gnu-LTO + +! RUN: %libomptarget-compile-fortran-run-and-check-generic +program main + integer, allocatable :: inArray(:,:,:) + integer, allocatable :: outArray(:,:,:) + + allocate(inArray(3,3,3)) + allocate(outArray(3,3,3)) + + do i = 1, 3 + do j = 1, 3 + do k = 1, 3 + inArray(i, j, k) = 42 + outArray(i, j, k) = 0 + end do + end do + end do + +!$omp target map(tofrom:inArray(1:3, 1:3, 2:2), outArray(1:3, 1:3, 1:3)) + do j = 1, 3 + do k = 1, 3 + outArray(k, j, 2) = inArray(k, j, 2) + end do + end do +!$omp end target + +print *, outArray + +deallocate(inArray) +deallocate(outArray) + +end program + +! 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 |
