summaryrefslogtreecommitdiff
path: root/offload/test/offloading/fortran/target-map-nested-dtype-complex-member.f90
blob: e1c5fbba538734f9137e4e31aefdaec41a23fb62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
! Offloading test checking interaction of an nested derived type member map of
! a complex number member
! REQUIRES: flang, amdgpu

! RUN: %libomptarget-compile-fortran-run-and-check-generic
program main
    type :: bottom_layer
      real(8) :: i2
      complex  :: j2
      real(4) :: array_i2(10)
      real(4) :: array_j2(10)
    end type bottom_layer

    type :: top_layer
      real(4) :: i
      integer(4) :: array_i(10)
      real(4) :: j
      type(bottom_layer) :: nested
      integer, allocatable :: array_j(:)
      integer(4) :: k
      complex :: l
    end type top_layer

    type(top_layer) :: top_dtype

!$omp target map(tofrom: top_dtype%nested%i2, top_dtype%k, top_dtype%nested%j2, top_dtype%nested%array_i2, top_dtype%l)
    do i = 1, 10
      top_dtype%nested%array_i2(i) = i * 2
    end do

    top_dtype%l = (10,20)
    top_dtype%nested%j2 = (510,210)

    top_dtype%nested%i2 = 30.30
    top_dtype%k = 74
!$omp end target

  print *, top_dtype%nested%i2
  print *, top_dtype%k
  print *, top_dtype%nested%array_i2
  print *, top_dtype%l
  print *, top_dtype%nested%j2
end program main

!CHECK: 30.299999237060547
!CHECK: 74
!CHECK: 2. 4. 6. 8. 10. 12. 14. 16. 18. 20.
!CHECK: (10.,20.)
!CHECK: (510.,210.)