https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47805
--- Comment #7 from janus at gcc dot gnu.org --- Another very related case that gfortran currently accepts, although it is invalid according to the interpretation request: module m1 implicit none type, abstract :: t1 contains procedure(ifc), deferred, private :: tbp end type abstract interface subroutine ifc(arg) import :: t1 class(t1) :: arg end subroutine end interface end module module m2 use m1 implicit none type, extends(t1) :: t2 contains procedure :: tbp => tbp_t2 end type contains subroutine tbp_t2(arg) class(t2) :: arg print *, "this is t2!" end subroutine end module program test use m2 implicit none type(t2) :: x call x%tbp() end It is correctly rejected by ifort 18.