1! Offloading test checking interaction of pointer and target with target across 2! multiple scopes 3! REQUIRES: flang, amdgpu 4 5! RUN: %libomptarget-compile-fortran-run-and-check-generic 6module test 7 contains 8 subroutine func_arg(arg_alloc) 9 integer, pointer, intent (inout) :: arg_alloc(:) 10 11 !$omp target map(tofrom: arg_alloc) 12 do index = 1, 10 13 arg_alloc(index) = arg_alloc(index) + index 14 end do 15 !$omp end target 16 17 print *, arg_alloc 18 end subroutine func_arg 19end module 20 21subroutine func 22 integer, pointer :: local_alloc(:) 23 integer, target :: b(10) 24 local_alloc => b 25 26 !$omp target map(tofrom: local_alloc) 27 do index = 1, 10 28 local_alloc(index) = index 29 end do 30 !$omp end target 31 32 print *, local_alloc 33 end subroutine func 34 35 36 program main 37 use test 38 integer, pointer :: map_ptr(:) 39 integer, target :: b(10) 40 41 map_ptr => b 42 43 !$omp target map(tofrom: map_ptr) 44 do index = 1, 10 45 map_ptr(index) = index 46 end do 47 !$omp end target 48 49 call func 50 51 print *, map_ptr 52 53 call func_arg(map_ptr) 54end program 55 56!CHECK: 1 2 3 4 5 6 7 8 9 10 57!CHECK: 1 2 3 4 5 6 7 8 9 10 58!CHECK: 2 4 6 8 10 12 14 16 18 20 59