https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77657
Bug ID: 77657 Summary: link error with implementation of user-defined derived type input/output (UD-DTIO) in child extending abstract parent Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: damian at sourceryinstitute dot org Target Milestone: --- It appears there might be a problem with linking an abstract interface in the module of a parent type with a child type in another module: $ cat ud-dtio-abstract.f90 MODULE abstract_parent implicit none type, abstract :: parent contains procedure(write_formatted_interface), deferred :: write_formatted generic :: write(formatted) => write_formatted end type parent abstract interface subroutine write_formatted_interface(this,unit,iotype,vlist,iostat,iomsg) import parent class(parent), intent(in) :: this integer, intent(in) :: unit character (len=*), intent(in) :: iotype integer, intent(in) :: vlist(:) integer, intent(out) :: iostat character (len=*), intent(inout) :: iomsg end subroutine end interface end module module child_module use abstract_parent, only : parent implicit none type, extends(parent) :: child contains procedure :: write_formatted end type contains subroutine write_formatted(this,unit,iotype,vlist,iostat,iomsg) class(child), intent(in) :: this integer, intent(in) :: unit character (len=*), intent(in) :: iotype integer, intent(in) :: vlist(:) integer, intent(out) :: iostat character (len=*), intent(inout) :: iomsg end subroutine end module use child_module, only : child implicit none write(*,*) child() $ gfortran ud-dtio-abstract.f90 /tmp/ccOmINhD.o: In function `MAIN__': ud-dtio-abstract.f90:(.text+0xac): undefined reference to `write_formatted_interface_' collect2: error: ld returned 1 exit status $ gfortran --version GNU Fortran (GCC) 7.0.0 20160904 (experimental)