1! Test of vector-private variables declared on loop directive.
2
3! { dg-do run }
4
5program main
6  integer :: x, i, j, k, idx, arr(0:32*32*32)
7
8  do i = 0, 32*32*32-1
9     arr(i) = i
10  end do
11
12  !$acc kernels copy(arr)
13  !$acc loop gang(num:32)
14  do i = 0, 31
15     !$acc loop worker(num:8)
16     do j = 0, 31
17        !$acc loop vector(length:32) private(x)
18        do k = 0, 31
19           x = ieor(i, j * 3)
20           arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k
21        end do
22        !$acc loop vector(length:32) private(x)
23        do k = 0, 31
24           x = ior(i, j * 5)
25           arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k
26        end do
27     end do
28  end do
29  !$acc end kernels
30
31  do i = 0, 32 - 1
32     do j = 0, 32 -1
33        do k = 0, 32 - 1
34           idx = i * 1024 + j * 32 + k
35           if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
36              stop 1
37           end if
38        end do
39     end do
40  end do
41end program main
42