1! { dg-do run }
2! { dg-options "" }
3  implicit none
4  real :: f(10,10,10,3,4)
5  integer, parameter :: upper(5) = ubound(f), lower(5) = lbound (f)
6  integer :: varu(5), varl(5)
7
8  varu(:) = ubound(f)
9  varl(:) = lbound(f)
10  if (any (varu /= upper)) STOP 1
11  if (any (varl /= lower)) STOP 2
12
13  call check (f, upper, lower)
14  call check (f, ubound(f), lbound(f))
15
16contains
17
18  subroutine check (f, upper, lower)
19    implicit none
20    integer :: upper(5), lower(5)
21    real :: f(:,:,:,:,:)
22
23    if (any (ubound(f) /= upper)) STOP 3
24    if (any (lbound(f) /= lower)) STOP 4
25  end subroutine check
26
27end
28