fix pr/45972
[official-gcc.git] / gcc / testsuite / gfortran.dg / associate_6.f03
blobba0e5c098098ac0eec5dbc721b3f2ff4e73d5656
1 ! { dg-do compile }
2 ! { dg-options "-std=f2003 -fdump-tree-original" }
4 ! PR fortran/38936
5 ! Check that array expression association (with correct bounds) works for
6 ! complicated expressions.
8 ! Contributed by Daniel Kraft, d@domob.eu.
10 MODULE m
11   IMPLICIT NONE
13 CONTAINS
15   PURE FUNCTION func (n)
16     INTEGER, INTENT(IN) :: n
17     INTEGER :: func(2 : n+1)
19     INTEGER :: i
21     func = (/ (i, i = 1, n) /)
22   END FUNCTION func
24 END MODULE m
26 PROGRAM main
27   USE :: m
28   IMPLICIT NONE
30   ASSOCIATE (arr => func (4))
31     ! func should only be called once here, not again for the bounds!
33     IF (LBOUND (arr, 1) /= 1 .OR. UBOUND (arr, 1) /= 4) CALL abort ()
34     IF (arr(1) /= 1 .OR. arr(4) /= 4) CALL abort ()
35   END ASSOCIATE
36 END PROGRAM main
37 ! { dg-final { cleanup-modules "m" } }
38 ! { dg-final { scan-tree-dump-times "func" 2 "original" } }
39 ! { dg-final { cleanup-tree-dump "original" } }