! Offloading test checking interaction of an explicit member map a large nested ! derived type ! REQUIRES: flang, amdgpu ! RUN: %libomptarget-compile-fortran-run-and-check-generic program main type :: bottom_layer1 real(4) :: i4 real(4) :: j4 real(4) :: k4 end type bottom_layer1 type :: bottom_layer2 integer(4) :: i3 integer(4) :: j3 integer(4) :: k3 end type bottom_layer2 type :: middle_layer real(4) :: array_i2(10) real(4) :: i2 real(4) :: array_j2(10) type(bottom_layer1) :: nest type(bottom_layer2) :: nest2 end type middle_layer type :: top_layer real(4) :: i integer(4) :: array_i(10) real(4) :: j integer, allocatable :: array_j(:) integer(4) :: k type(middle_layer) :: nested end type top_layer type(top_layer) :: top_dtype top_dtype%nested%nest%j4 = 12 !$omp target map(tofrom: top_dtype%nested%nest%j4, top_dtype%nested%nest%i4, top_dtype%nested%nest%k4) & !$omp map(tofrom: top_dtype%array_i, top_dtype%nested%nest2%i3, top_dtype%nested%i2, top_dtype%nested%nest2%k3, top_dtype%nested%nest2%j3) top_dtype%nested%nest%i4 = 10 top_dtype%nested%nest%j4 = 12 + top_dtype%nested%nest%j4 top_dtype%nested%nest%k4 = 54 top_dtype%nested%nest2%i3 = 20 top_dtype%nested%nest2%j3 = 40 top_dtype%nested%nest2%k3 = 60 top_dtype%nested%i2 = 200 do i = 1, 10 top_dtype%array_i(i) = i end do !$omp end target print *, top_dtype%nested%nest%i4 print *, top_dtype%nested%nest%j4 print *, top_dtype%nested%nest%k4 print *, top_dtype%nested%nest2%i3 print *, top_dtype%nested%nest2%j3 print *, top_dtype%nested%nest2%k3 print *, top_dtype%nested%i2 print *, top_dtype%array_i end program main !CHECK: 10. !CHECK: 24. !CHECK: 54. !CHECK: 20 !CHECK: 40 !CHECK: 60 !CHECK: 200. !CHECK: 1 2 3 4 5 6 7 8 9 10