| ! Offloading test for recursive default mapper emission |
| ! REQUIRES: flang, amdgpu |
| |
| ! RUN: %libomptarget-compile-fortran-run-and-check-generic |
| |
| module recursive_mapper_mod |
| implicit none |
| |
| type :: inner |
| integer :: value |
| type(inner), pointer :: next |
| end type inner |
| |
| type :: outer |
| integer, allocatable :: arr(:) |
| type(inner), pointer :: head |
| end type outer |
| |
| contains |
| |
| end module recursive_mapper_mod |
| |
| program main |
| use recursive_mapper_mod |
| implicit none |
| |
| type(outer) :: o |
| |
| allocate(o%arr(2)) |
| o%arr = [1, 2] |
| |
| !$omp target map(tofrom: o) |
| o%arr(1) = o%arr(1) + 1 |
| o%arr(2) = o%arr(2) + 1 |
| !$omp end target |
| |
| print *, o%arr(1), o%arr(2) |
| end program main |
| |
| ! CHECK: 2 3 |