https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89574
--- Comment #7 from anlauf at gcc dot gnu.org --- Two slightly reduced testcase variants that ICE with current master: % cat pr89574-red1.f90 module mod contains subroutine init end subroutine end module mod module init use mod, only : test_init => init implicit none contains subroutine sub call test_init end subroutine sub end module % cat pr89574-red2.f90 module mod contains integer function init () init = 0 end function end module mod module init use mod, only : test_init => init implicit none contains subroutine test_sub print *, test_init () end subroutine test_sub end module Since changing "module init" to "module init1" avoid the issue in all cases, this lookslike a namespace / symbol issue.