1! { dg-do run }
2! { dg-options "-fbounds-check" }
3!
4! PR fortran/40383
5! Gave before a bogus out of bounds.
6! Contributed by Joost VandeVondele.
7!
8MODULE M1
9  INTEGER, PARAMETER :: default_string_length=80
10END MODULE M1
11MODULE M2
12 USE M1
13 IMPLICIT NONE
14CONTAINS
15 FUNCTION F1(a,b,c,d) RESULT(RES)
16   CHARACTER(LEN=default_string_length), OPTIONAL :: a,b,c,d
17   LOGICAL :: res
18 END FUNCTION F1
19END MODULE M2
20
21MODULE M3
22 USE M1
23 USE M2
24 IMPLICIT NONE
25CONTAINS
26 SUBROUTINE S1
27   CHARACTER(LEN=default_string_length) :: a,b
28   LOGICAL :: L1
29   INTEGER :: i
30   DO I=1,10
31      L1=F1(a,b)
32   ENDDO
33 END SUBROUTINE
34END MODULE M3
35
36USE M3
37CALL S1
38END
39