https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69965
--- Comment #1 from Gerhard Steinmetz <gerhard.steinmetz.fort...@t-online.de> --- Compiles if abstract "class(tab)" is replaced with extended "class(t)" : $ cat z2.f90 module m type, abstract :: tab contains procedure(fab), deferred :: f end type type, extends(tab) :: t contains procedure :: f end type abstract interface function fab(x) result(z) import tab class(tab) :: x character(*) :: z end end interface contains function f(x) class(t) :: x character(1) :: f f = 'a' end subroutine s(x) class(t) :: x print *, x%f() end end module