https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107331
Bug ID: 107331 Summary: Extension and assigning of type results in GNU internal compiler error Product: gcc Version: 10.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: d.mentock at mpie dot de Target Milestone: --- The following fortran program results in an internal compiler error: module my_test_module type :: baseType contains procedure :: & asExtended => baseType_asExtended end type baseType type, extends(baseType) :: extendedType end type extendedType contains function baseType_asExtended(self) result(extended) class(baseType), intent(in), target :: self class(extendedType), pointer :: extended select type(self) class is (extendedType) extended => self class default nullify(extended) end select end function baseType_asExtended end module my_test_module Program TEST use my_test_module implicit none class(baseType), pointer :: & generic_object type(extendedType) :: & extended_object allocate(extendedType::generic_object) ! compiler error happens without this line as well extended_object = generic_object%asExtended() End Program TEST --> 34 | extended_object = generic_object%asExtended() | 1 internal compiler error: in conv_function_val, at fortran/trans-expr.c:4158 Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions. The same code has no problems compiling on intel’s ifort 2021.6.0 20220226. Modifying the main program TEST as following stops the error from occurring on GNU: Program TEST use my_test_module implicit none class(baseType), pointer :: & generic_object type(extendedType) :: & extended_object type(extendedType), pointer :: & generic_object_pointer allocate(extendedType::generic_object) generic_object_pointer => generic_object%asExtended() extended_object = generic_object_pointer End Program TEST