https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66544
--- Comment #5 from janus at gcc dot gnu.org --- Note that there are other ways to generate a "recursive" interface, like: module m implicit none contains real function f(z) procedure(f), pointer :: z end end module This one is compiled just fine by gfortran. There is also the very closely related PR54107, which is fixed already. From the discussion there it sounds like self-referential interfaces are legal in principle.