blob: 3c8c3507ed728a48e13c113575055a88c11ac930 [file] [log] [blame]
! 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