Make implicit default mapper generation respect defaultmap categories so unrelated defaultmap clauses no longer suppress mappers for derived types. Added related tests.
50 lines
1.0 KiB
Fortran
50 lines
1.0 KiB
Fortran
! Offload test that ensures defaultmap(tofrom: scalar) does not suppress
|
|
! implicit default mapper generation for allocatable derived types.
|
|
! REQUIRES: flang, amdgpu
|
|
|
|
! RUN: %libomptarget-compile-fortran-run-and-check-generic
|
|
program defaultmap_implicit_mapper
|
|
implicit none
|
|
|
|
type :: payload_t
|
|
integer, allocatable :: arr(:)
|
|
end type payload_t
|
|
|
|
type(payload_t), allocatable :: obj
|
|
integer, parameter :: n = 8
|
|
integer :: i
|
|
integer :: scalar
|
|
logical :: ok
|
|
|
|
allocate(obj)
|
|
allocate(obj%arr(n))
|
|
obj%arr = 1
|
|
scalar = 2
|
|
|
|
!$omp target defaultmap(tofrom: scalar)
|
|
do i = 1, n
|
|
obj%arr(i) = obj%arr(i) + scalar
|
|
end do
|
|
scalar = 7
|
|
!$omp end target
|
|
|
|
ok = .true.
|
|
do i = 1, n
|
|
if (obj%arr(i) /= 3) ok = .false.
|
|
end do
|
|
if (scalar /= 7) ok = .false.
|
|
|
|
if (ok) then
|
|
print *, "Test passed!"
|
|
else
|
|
print *, "Test failed!"
|
|
print *, obj%arr
|
|
print *, scalar
|
|
end if
|
|
|
|
deallocate(obj%arr)
|
|
deallocate(obj)
|
|
end program defaultmap_implicit_mapper
|
|
|
|
! CHECK: Test passed!
|