https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105807
--- Comment #3 from G. Steinmetz <gs...@t-online.de> --- One tick simpler, without vect3d : $ cat z3.f90 program p type t end type type t2 class(t), allocatable :: v end type type, extends(t2) :: elem2d end type type(t) :: b class(t2), allocatable :: e e = elem2d(b) end program No ICE when b is replaced by constructor t() : $ cat z5.f90 program p type t end type type t2 class(t), allocatable :: v end type type, extends(t2) :: elem2d end type class(t2), allocatable :: e e = elem2d(t()) end program