https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78719
--- Comment #2 from Gerhard Steinmetz <gerhard.steinmetz.fort...@t-online.de> --- Interestingly, following invalid variant with "type(t)" is silently accepted and gives same results as z0.f90 in comment 1. $ cat z2.f90 program p type t integer :: n end type type(t) :: g !! abstract interface subroutine h end end interface procedure(h), pointer :: s s => f call s s => g call s contains subroutine f print *, 'inside f' end subroutine g print *, 'inside g' end end $ gfortran-7-20161204 z2.f90 $ a.out inside f inside g