1! { dg-do run }
2
3program test
4  integer, parameter :: N = 8
5  real, allocatable :: a(:), b(:)
6
7  allocate (a(N))
8  allocate (b(N))
9
10  a(:) = 3.0
11  b(:) = 0.0
12
13  !$acc enter data copyin (a(1:N), b(1:N))
14
15  !$acc parallel
16  do i = 1, n
17    b(i) = a (i)
18  end do
19  !$acc end parallel
20
21  !$acc exit data copyout (a(1:N), b(1:N))
22
23  do i = 1, n
24    if (a(i) .ne. 3.0) call abort
25    if (b(i) .ne. 3.0) call abort
26  end do
27
28  a(:) = 5.0
29  b(:) = 1.0
30
31  !$acc enter data copyin (a(1:N), b(1:N))
32
33  !$acc parallel
34  do i = 1, n
35    b(i) = a (i)
36  end do
37  !$acc end parallel
38
39  !$acc exit data copyout (a(1:N), b(1:N))
40
41  do i = 1, n
42    if (a(i) .ne. 5.0) call abort
43    if (b(i) .ne. 5.0) call abort
44  end do
45end program test
46