! { dg-do run } ! ! PR fortran/36132 ! ! Before invalid memory was accessed because an absent, optional ! argument was packed before passing it as absent actual. ! Getting it to crash is difficult, but valgrind shows the problem. ! MODULE M1 INTEGER, PARAMETER :: dp=KIND(0.0D0) CONTAINS SUBROUTINE S1(a) REAL(dp), DIMENSION(45), INTENT(OUT), & OPTIONAL :: a if (present(a)) STOP 1 END SUBROUTINE S1 SUBROUTINE S2(a) REAL(dp), DIMENSION(:, :), INTENT(OUT), & OPTIONAL :: a CALL S1(a) END SUBROUTINE END MODULE M1 USE M1 CALL S2() END