summaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.fortran/target-enter-data-1.f90
blob: 39faffd44c23f007a7270531112a62a3c92d7774 (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
! { dg-do run }

program main
  implicit none
  integer, allocatable, dimension(:) :: AA, BB, CC, DD
  integer :: i, N = 20

  allocate(BB(N))
  AA = [(i, i=1,N)]

  !$omp target enter data map(alloc: BB)
  !$omp target enter data map(to: AA)

  !$omp target
    BB = 3 * AA
  !$omp end target

  !$omp target exit data map(delete: AA)
  !$omp target exit data map(from: BB)

  if (any (BB /= [(3*i, i=1,N)])) stop 1
  if (any (AA /= [(i, i=1,N)])) stop 2


  CC = 31 * BB
  DD = [(-i, i=1,N)]

  !$omp target enter data map(to: CC) map(alloc: DD)

  !$omp target
    DD = 5 * CC
  !$omp end target

  !$omp target exit data map(delete: CC) map(from: DD)

  if (any (CC /= [(31*3*i, i=1,N)])) stop 3
  if (any (DD /= [(31*3*5*i, i=1,N)])) stop 4
end