https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103931
--- Comment #22 from anlauf at gcc dot gnu.org --- Here another invalid example which ICEs because the clash is not detected: module AModule implicit none type, bind(C) :: c_ptr private integer(8) :: c_address end type c_ptr end module module GModule use AModule, only: C_PTR use, intrinsic :: ISO_C_BINDING, only: C_PTR implicit none type(c_ptr) :: ptr end module This hits an assert a few lines above the place you looked at... (Interchanging the use statements helps here.)