! PR fortran/16861
! { dg-do run }
module foo
  integer :: i
end module foo

module bar
contains
  subroutine baz(j)
    use foo
    integer, dimension(i) :: j
    integer :: n

    do n = 1, i
      if (j(n) /= n**2) call abort
    end do
  end subroutine baz
end module bar

subroutine quus()
  use foo
  use bar

  i = 2
  call baz ((/1,4/))
  i = 7
  call baz ((/1,4,9,16,25,36,49/))
end subroutine quus

program test
  call quus
end program test
