1! { dg-do run }
2! { dg-additional-options "-std=f2008" }
3!
4! PR fortran/68020
5!
6! Contributed by Gerhard Steinmetz
7!
8subroutine rank_1_2
9  integer, parameter :: a(1, 2) = 0
10  integer, parameter :: x(*, *) = a
11  integer, parameter :: y(11:*, 12:*) = a
12  integer :: k
13  if (any (lbound(x) /= [1,1])) stop 1
14  if (any (ubound(x) /= [1,2])) stop 2
15  if (any (lbound(y) /= [11,12])) stop 3
16  if (any (ubound(y) /= [11,13])) stop 4
17end
18
19subroutine rank_3
20  integer, parameter :: a(1, 2, 3) = 0
21  integer, parameter :: x(*, *, *) = a
22  integer, parameter :: y(11:*, 12:*, 13:*) = a
23  integer :: k
24  if (any (lbound(x) /= [1,1,1])) stop 5
25  if (any (ubound(x) /= [1,2,3])) stop 6
26  if (any (lbound(y) /= [11,12,13])) stop 7
27  if (any (ubound(y) /= [11,13,15])) stop 8
28end
29
30subroutine rank_4
31  integer, parameter :: a(1, 2, 3, 4) = 0
32  integer, parameter :: x(*, *, *, *) = a
33  integer, parameter :: y(11:*, 12:*, 13:*, 14:*) = a
34  integer :: k
35  if (any (lbound(x) /= [1,1,1,1])) stop 9
36  if (any (ubound(x) /= [1,2,3,4])) stop 10
37  if (any (lbound(y) /= [11,12,13,14])) stop 11
38  if (any (ubound(y) /= [11,13,15,17])) stop 12
39end
40
41program p
42  call rank_1_2
43  call rank_3
44  call rank_4
45end program p
46