https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69654
Harald Anlauf <anlauf at gmx dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |anlauf at gmx dot de --- Comment #2 from Harald Anlauf <anlauf at gmx dot de> --- Slightly reduced test case: Module foo_pointers_class implicit none type :: ty_foo_pointers class(*),pointer :: foo => NULL() end type ty_foo_pointers type :: ty_class_basis end type ty_class_basis End Module foo_pointers_class Module foo_class use foo_pointers_class implicit none type,extends(ty_class_basis) :: ty_foo2 type(ty_foo_pointers) :: foo end type ty_foo2 End Module foo_class Module foo_scripts_mod use foo_class, only: ty_foo2 implicit none contains subroutine foo_script1 type(ty_foo2) :: foo2 Call foo_init2(foo2) end subroutine foo_script1 subroutine foo_init2(self) type(ty_foo2),target :: self end subroutine foo_init2 End Module foo_scripts_mod The ICE goes away when the pointer initialization is removed. I think there are similar (related?) PRs.