xref: /llvm-project/offload/test/offloading/fortran/target-map-nested-dtype-complex-member.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1! Offloading test checking interaction of an nested derived type member map of
2! a complex number member
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      complex  :: j2
10      real(4) :: array_i2(10)
11      real(4) :: array_j2(10)
12    end type bottom_layer
13
14    type :: top_layer
15      real(4) :: i
16      integer(4) :: array_i(10)
17      real(4) :: j
18      type(bottom_layer) :: nested
19      integer, allocatable :: array_j(:)
20      integer(4) :: k
21      complex :: l
22    end type top_layer
23
24    type(top_layer) :: top_dtype
25
26!$omp target map(tofrom: top_dtype%nested%i2, top_dtype%k, top_dtype%nested%j2, top_dtype%nested%array_i2, top_dtype%l)
27    do i = 1, 10
28      top_dtype%nested%array_i2(i) = i * 2
29    end do
30
31    top_dtype%l = (10,20)
32    top_dtype%nested%j2 = (510,210)
33
34    top_dtype%nested%i2 = 30.30
35    top_dtype%k = 74
36!$omp end target
37
38  print *, top_dtype%nested%i2
39  print *, top_dtype%k
40  print *, top_dtype%nested%array_i2
41  print *, top_dtype%l
42  print *, top_dtype%nested%j2
43end program main
44
45!CHECK: 30.299999237060547
46!CHECK: 74
47!CHECK: 2. 4. 6. 8. 10. 12. 14. 16. 18. 20.
48!CHECK: (10.,20.)
49!CHECK: (510.,210.)
50