aboutsummaryrefslogtreecommitdiff
path: root/offload/test/offloading/fortran/recursive-default-mapper.f90
blob: 47b706d108437aa16da2d8df00206afc6556f7dc (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
! Offloading test for recursive default mapper emission
! REQUIRES: flang, amdgpu

! RUN: %libomptarget-compile-fortran-run-and-check-generic

module recursive_mapper_mod
  implicit none

  type :: inner
    integer :: value
    type(inner), pointer :: next
  end type inner

  type :: outer
    integer, allocatable :: arr(:)
    type(inner), pointer :: head
  end type outer

contains

end module recursive_mapper_mod

program main
  use recursive_mapper_mod
  implicit none

  type(outer) :: o

  allocate(o%arr(2))
  o%arr = [1, 2]

  !$omp target map(tofrom: o)
    o%arr(1) = o%arr(1) + 1
    o%arr(2) = o%arr(2) + 1
  !$omp end target

  print *, o%arr(1), o%arr(2)
end program main

! CHECK: 2 3