trunk has been broken with CP2K since some time, which I believed to be a side effect of PR40332, but the following is a stand-alone reduced testcase:
vond...@pcihopt3:/data03/vondele/bug> gfortran -fbounds-check -g test.f90 vond...@pcihopt3:/data03/vondele/bug> ./a.out At line 8 of file test.f90 Fortran runtime error: Actual string length is shorter than the declared one for dummy argument 'a' (0/80) vond...@pcihopt3:/data03/vondele/bug> cat test.f90 MODULE M1 INTEGER, PARAMETER :: default_string_length=80 END MODULE M1 MODULE M2 USE M1 IMPLICIT NONE CONTAINS FUNCTION F1(a,b,c,d) RESULT(RES) CHARACTER(LEN=default_string_length), OPTIONAL :: a,b,c,d LOGICAL :: res END FUNCTION F1 END MODULE M2 MODULE M3 USE M1 USE M2 IMPLICIT NONE CONTAINS SUBROUTINE S1 CHARACTER(LEN=default_string_length) :: a,b LOGICAL :: L1 INTEGER :: i DO I=1,10 L1=F1(a,b) ENDDO END SUBROUTINE END MODULE M3 USE M3 CALL S1 END this is likely related to the optional arguments. -- Summary: [4.5 Regression] incorrect bounds checking with optional character arguments Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jv244 at cam dot ac dot uk http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40383