aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.fortran/target-enter-data-2.F90
blob: 320d8bf419f4f45c22a90ee03030fd0f16738b06 (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
! { dg-additional-options "-DMEM_SHARED" { target offload_device_shared_as } }
!
! PR middle-end/94635
  implicit none
  integer, parameter :: N = 20
  integer, allocatable, dimension(:) :: my1DPtr
  integer, dimension(N) :: my1DArr
  integer :: i

  allocate(my1DPtr(N))
  my1DPtr = 43

  !$omp target enter data map(alloc: my1DPtr)
    !$omp target
      my1DPtr = [(i , i = 1, N)]
    !$omp end target

    !$omp target map(from: my1DArr) 
      my1DArr = my1DPtr
    !$omp end target
  !$omp target exit data map(delete: my1DPtr)

  if (any (my1DArr /= [(i, i = 1, N)])) stop 1
#if MEM_SHARED
  if (any (my1DArr /= my1DPtr)) stop 2
#else
  if (any (43 /= my1DPtr)) stop 3
#endif

  my1DPtr = [(2*N-i, i = 1, N)]
  my1DArr = 42
 
  !$omp target map(tofrom: my1DArr) map(tofrom: my1DPtr(:))
    my1DArr = my1DPtr
    my1DPtr = 20
  !$omp end target

  if (any (my1DArr /= [(2*N-i, i = 1, N)])) stop 4
  if (any (20 /= my1DPtr)) stop 6
end