blob: 29894941c424b56441cb1f49259e3a48669960f4 [file]
! Test implicit mapping of alloctable record fields.
! REQUIRES: flang, amdgpu
! This fails only because it needs the Fortran runtime built for device. If this
! is available, this test succeeds when run.
! XFAIL: *
! RUN: %libomptarget-compile-fortran-generic
! RUN: env LIBOMPTARGET_INFO=16 %libomptarget-run-generic 2>&1 | %fcheck-generic
program test_implicit_field_mapping
implicit none
type record_t
real, allocatable :: not_to_implicitly_map(:)
real, allocatable :: to_implicitly_map(:)
end type
type(record_t) :: dst_record
real :: src_array(10)
real :: dst_sum, src_sum
integer :: i
call random_number(src_array)
dst_sum = 0
src_sum = 0
do i=1,10
src_sum = src_sum + src_array(i)
end do
print *, "src_sum=", src_sum
!$omp target map(from: dst_sum)
dst_record%to_implicitly_map = src_array
dst_sum = 0
do i=1,10
dst_sum = dst_sum + dst_record%to_implicitly_map(i)
end do
!$omp end target
print *, "dst_sum=", dst_sum
if (src_sum == dst_sum) then
print *, "Test succeeded!"
else
print *, "Test failed!", " dst_sum=", dst_sum, "vs. src_sum=", src_sum
endif
end program
! CHECK: "PluginInterface" device {{[0-9]+}} info: Launching kernel {{.*}}
! CHECK: Test succeeded!