xref: /llvm-project/offload/test/offloading/fortran/target-map-nested-dtype-multi-member.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1! Offloading test checking interaction of an explicit member map from a small
2! nested derived type
3! REQUIRES: flang, amdgpu
4
5! RUN: %libomptarget-compile-fortran-run-and-check-generic
6program main
7    type :: bottom_layer
8      real(8) :: i2
9      real(4) :: array_i2(10)
10      real(4) :: array_j2(10)
11    end type bottom_layer
12
13    type :: top_layer
14      real(4) :: i
15      integer(4) :: array_i(10)
16      real(4) :: j
17      type(bottom_layer) :: nested
18      integer, allocatable :: array_j(:)
19      integer(4) :: k
20    end type top_layer
21
22    type(top_layer) :: top_dtype
23
24!$omp target map(tofrom: top_dtype%nested%i2, top_dtype%k, top_dtype%nested%array_i2)
25    do i = 1, 10
26      top_dtype%nested%array_i2(i) = i * 2
27    end do
28
29    top_dtype%nested%i2 = 30.30
30    top_dtype%k = 74
31!$omp end target
32
33  print *, top_dtype%nested%i2
34  print *, top_dtype%k
35  print *, top_dtype%nested%array_i2
36end program main
37
38!CHECK: 30.299999237060547
39!CHECK: 74
40!CHECK: 2. 4. 6. 8. 10. 12. 14. 16. 18. 20.
41