! { dg-do run }
program main
  integer, parameter :: n = 40
  integer, allocatable :: ar(:,:,:)
  integer :: i
  allocate (ar(1:n,0:n-1,0:n-1))
  !$acc enter data copyin (ar)
  !$acc update host (ar)
  !$acc update device (ar)
  call update_ar (ar, n)
  !$acc exit data copyout (ar)
end program main
subroutine update_ar (ar, n)
  integer :: n
  integer, dimension (1:n,0:n-1,0:n-1) :: ar
  !$acc update host (ar)
  !$acc update device (ar)
end subroutine update_ar