1! { dg-do run }
2
3program main
4  implicit none
5  real, allocatable :: myarr(:,:,:,:,:)
6  integer i, j, k, l, m
7
8  allocate(myarr(1:10,1:10,1:10,1:10,1:10))
9
10  do i=1,10
11    do j=1,10
12      do k=1,10
13        do l=1,10
14          do m=1,10
15            myarr(m,l,k,j,i) = i+j+k+l+m
16          end do
17        end do
18      end do
19    end do
20  end do
21
22  do i=1,10
23    !$acc data copy(myarr(:,:,:,:,i))
24    !$acc parallel loop collapse(4) present(myarr(:,:,:,:,i))
25    do j=1,10
26      do k=1,10
27        do l=1,10
28          do m=1,10
29            myarr(m,l,k,j,i) = myarr(m,l,k,j,i) + 1
30          end do
31        end do
32      end do
33    end do
34    !$acc end parallel loop
35    !$acc end data
36  end do
37
38  do i=1,10
39    do j=1,10
40      do k=1,10
41        do l=1,10
42          do m=1,10
43            if (myarr(m,l,k,j,i) .ne. i+j+k+l+m+1) stop 1
44          end do
45        end do
46      end do
47    end do
48  end do
49
50end program main
51