1! { dg-do run }
2
3program main
4  implicit none
5  integer, allocatable, dimension(:) :: AA, BB, CC, DD
6  integer :: i, N = 20
7
8  allocate(BB(N))
9  AA = [(i, i=1,N)]
10
11  !$omp target enter data map(alloc: BB)
12  !$omp target enter data map(to: AA)
13
14  !$omp target
15    BB = 3 * AA
16  !$omp end target
17
18  !$omp target exit data map(delete: AA)
19  !$omp target exit data map(from: BB)
20
21  if (any (BB /= [(3*i, i=1,N)])) stop 1
22  if (any (AA /= [(i, i=1,N)])) stop 2
23
24
25  CC = 31 * BB
26  DD = [(-i, i=1,N)]
27
28  !$omp target enter data map(to: CC) map(alloc: DD)
29
30  !$omp target
31    DD = 5 * CC
32  !$omp end target
33
34  !$omp target exit data map(delete: CC) map(from: DD)
35
36  if (any (CC /= [(31*3*i, i=1,N)])) stop 3
37  if (any (DD /= [(31*3*5*i, i=1,N)])) stop 4
38end
39