1! { dg-do run }
2
3module param
4  integer, parameter :: N = 32
5end module param
6
7program main
8  use param
9  integer :: i
10  integer :: a(N)
11
12  do i = 1, N
13    a(i) = i
14  end do
15
16  !$acc parallel copy (a)
17  !$acc loop worker
18    do i = 1, N
19      call vector (a)
20    end do
21  !$acc end parallel
22
23  do i = 1, N
24    if (a(i) .ne. 0) stop 1
25  end do
26
27contains
28
29  subroutine vector (a)
30  !$acc routine vector
31  integer, intent (inout) :: a(N)
32  integer :: i
33
34  !$acc loop vector
35  do i = 1, N
36    a(i) = a(i) - a(i)
37  end do
38
39end subroutine vector
40
41end program main
42