! Copyright 2011-2021 Free Software Foundation, Inc.
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3 of the License, or
! (at your option) any later version.
! 
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
! GNU General Public License for more details.
! 
! You should have received a copy of the GNU General Public License
! along with this program.  If not, see <http://www.gnu.org/licenses/>.

program test
  integer :: foo (2, 3, 4)
  integer :: singledim (4)
  foo (:, :, :) = 10
  foo (2, 3, 4) = 20
  foo (2, 3, 4) = 20            ! break-static
  singledim (:) = 1
  singledim (4) = 2
  call sub (singledim, 4, singledim)
end
subroutine sub (varbound, n, unbound)
  integer :: n, varbound (n), unbound (*)
  varbound (4) = unbound (4)    ! break-variable
end
