1! { dg-do run }
2! Tests the fix for PR23446. Based on PR example.
3! Contributed by Paul Thomas  <pault@gcc.gnu.org>
4!
5! Tests furthermore the fix for PR fortran/29916.
6! Test contributed by Marco Restelli <mrestelli@gmail.com>
7!
8PROGRAM TST
9  INTEGER IMAX
10  INTEGER :: A(4) = 1
11  IMAX=2
12
13  CALL S(A)
14  CALL T(A)
15  CALL U(A)
16  if ( ALL(A.ne.(/2,2,3,4/))) CALL ABORT ()
17  if ( ALL(F().ne.(/2.0,2.0/))) CALL ABORT()
18
19CONTAINS
20  SUBROUTINE S(A)
21    INTEGER A(IMAX)
22    a = 2
23  END SUBROUTINE S
24  SUBROUTINE T(A)
25    INTEGER A(3:IMAX+4)
26    A(5:IMAX+4) = 3
27  END SUBROUTINE T
28  SUBROUTINE U(A)
29    INTEGER A(2,IMAX)
30    A(2,2) = 4
31  END SUBROUTINE U
32  FUNCTION F()
33    real :: F(IMAX)
34    F = 2.0
35  END FUNCTION F
36ENDPROGRAM TST
37