! { dg-do run } ! { dg-additional-options "-std=f2008" } ! ! PR fortran/68020 ! ! Contributed by Gerhard Steinmetz ! subroutine rank_1_2 integer, parameter :: a(1, 2) = 0 integer, parameter :: x(*, *) = a integer, parameter :: y(11:*, 12:*) = a integer :: k if (any (lbound(x) /= [1,1])) stop 1 if (any (ubound(x) /= [1,2])) stop 2 if (any (lbound(y) /= [11,12])) stop 3 if (any (ubound(y) /= [11,13])) stop 4 end subroutine rank_3 integer, parameter :: a(1, 2, 3) = 0 integer, parameter :: x(*, *, *) = a integer, parameter :: y(11:*, 12:*, 13:*) = a integer :: k if (any (lbound(x) /= [1,1,1])) stop 5 if (any (ubound(x) /= [1,2,3])) stop 6 if (any (lbound(y) /= [11,12,13])) stop 7 if (any (ubound(y) /= [11,13,15])) stop 8 end subroutine rank_4 integer, parameter :: a(1, 2, 3, 4) = 0 integer, parameter :: x(*, *, *, *) = a integer, parameter :: y(11:*, 12:*, 13:*, 14:*) = a integer :: k if (any (lbound(x) /= [1,1,1,1])) stop 9 if (any (ubound(x) /= [1,2,3,4])) stop 10 if (any (lbound(y) /= [11,12,13,14])) stop 11 if (any (ubound(y) /= [11,13,15,17])) stop 12 end program p call rank_1_2 call rank_3 call rank_4 end program p