Files
clang-p2996/offload/test/offloading/fortran/target-map-enter-exit-array-bounds.f90
Andrew Gozillon 7fd6cb2939 [Flang][OpenMP] Derived type member map fortran offload runtime tests
This is a large series of runtime tests that help to add coverage for the specific cases intended to be supported by the PR stack
that extends derived type map support in Flang+OpenMP. Primarily this will add functionality coverage, there's cases where
things may work, but not optimally (or at least similarly to the status quo in Clang), addiitonal IR tests are added in the
relevant segments of the related PRs to test for breakages like that.

Pull Request: https://github.com/llvm/llvm-project/pull/82850
2024-05-10 14:16:25 -05:00

43 lines
1.1 KiB
Fortran

! Offloading test checking interaction of an
! enter and exit map of an array of scalars
! with specified bounds
! 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 :: array(10)
do I = 1, 10
array(I) = I + I
end do
!$omp target enter data map(to: array(3:6))
! Shouldn't overwrite data already locked in
! on target via enter, which will then be
! overwritten by our exit
do I = 1, 10
array(I) = 10
end do
! The compiler/runtime is less lenient about read/write out of
! bounds when using enter and exit, we have to specifically loop
! over the correctly mapped range
!$omp target
do i=3,6
array(i) = array(i) + i
end do
!$omp end target
!$omp target exit data map(from: array(3:6))
print *, array
end program
!CHECK: 10 10 9 12 15 18 10 10 10 10