------- Comment #1 from dfranke at gcc dot gnu dot org 2008-12-22 15:16 ------- The same holds if G is an external subroutine and the module provides an explicit interface, but not, if the interface is defined in F (errors out).
SUBROUTINE g() print *, 'external' END SUBROUTINE MODULE m INTERFACE SUBROUTINE g() END SUBROUTINE END INTERFACE CONTAINS SUBROUTINE f() CALL g() CONTAINS SUBROUTINE g() print *, 'contained' END SUBROUTINE END SUBROUTINE END MODULE use m call g() call f() call g() end -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38594