xref: /llvm-project/offload/test/offloading/fortran/target-map-nested-dtype-derived-member.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1! Offloading test checking interaction of an nested derived type member map
2! with the inclusion of an entire nested derived type being mapped
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      type(bottom_layer) :: nested2
21    end type top_layer
22
23    type(top_layer) :: top_dtype
24
25!$omp target map(tofrom: top_dtype%k, top_dtype%nested2%array_i2, top_dtype%nested)
26    do i = 1, 10
27      top_dtype%nested2%array_i2(i) = i * 2
28      top_dtype%nested%array_i2(i) = i * 2
29    end do
30
31    top_dtype%nested%i2 = 30.30
32    top_dtype%k = 74
33!$omp end target
34
35  print *, top_dtype%nested%i2
36  print *, top_dtype%k
37  print *, top_dtype%nested%array_i2
38  print *, top_dtype%nested2%array_i2
39end program main
40
41!CHECK: 30.299999237060547
42!CHECK: 74
43!CHECK: 2. 4. 6. 8. 10. 12. 14. 16. 18. 20.
44!CHECK: 2. 4. 6. 8. 10. 12. 14. 16. 18. 20.
45