! { dg-do run } program main implicit none real, allocatable :: myarr(:,:,:,:,:) integer i, j, k, l, m allocate(myarr(1:10,1:10,1:10,1:10,1:10)) do i=1,10 do j=1,10 do k=1,10 do l=1,10 do m=1,10 myarr(m,l,k,j,i) = i+j+k+l+m end do end do end do end do end do do i=1,10 !$acc data copy(myarr(:,:,:,:,i)) !$acc parallel loop collapse(4) present(myarr(:,:,:,:,i)) do j=1,10 do k=1,10 do l=1,10 do m=1,10 myarr(m,l,k,j,i) = myarr(m,l,k,j,i) + 1 end do end do end do end do !$acc end parallel loop !$acc end data end do do i=1,10 do j=1,10 do k=1,10 do l=1,10 do m=1,10 if (myarr(m,l,k,j,i) .ne. i+j+k+l+m+1) stop 1 end do end do end do end do end do end program main