Files
llvm/offload/test/offloading/fortran/implicit-derived-enter-exit.f90
Akash Banerjee 8aa7d823b0 [OpenMP][Flang] Emit default declare mappers implicitly for derived types (#140562)
This patch adds support to emit default declare mappers for implicit
mapping of derived types when not supplied by user. This especially
helps tackle mapping of allocatables of derived types.
2025-11-14 15:59:48 +00:00

66 lines
1.4 KiB
Fortran

! REQUIRES: flang, amdgpu
! RUN: %libomptarget-compile-fortran-generic
! RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic
module enter_exit_mapper_mod
implicit none
type :: field_type
real, allocatable :: values(:)
end type field_type
type :: tile_type
type(field_type) :: field
integer, allocatable :: neighbors(:)
end type tile_type
contains
subroutine init_tile(tile)
type(tile_type), intent(inout) :: tile
integer :: j
allocate(tile%field%values(4))
allocate(tile%neighbors(4))
do j = 1, 4
tile%field%values(j) = 10.0 * j
tile%neighbors(j) = j
end do
end subroutine init_tile
end module enter_exit_mapper_mod
program implicit_enter_exit
use enter_exit_mapper_mod
implicit none
integer :: j
type(tile_type) :: tile
call init_tile(tile)
!$omp target enter data map(alloc: tile%field%values)
!$omp target
do j = 1, size(tile%field%values)
tile%field%values(j) = 5.0 * j
end do
!$omp end target
!$omp target exit data map(from: tile%field%values)
do j = 1, size(tile%field%values)
if (tile%field%values(j) /= 5.0 * j) then
print *, "======= Test Failed! ======="
stop 1
end if
if (tile%neighbors(j) /= j) then
print *, "======= Test Failed! ======="
stop 1
end if
end do
print *, "======= Test Passed! ======="
end program implicit_enter_exit
! CHECK: ======= Test Passed! =======