https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112964
Bug ID: 112964 Summary: ICE for recursive subroutine with assumed rank class(*) argument Product: gcc Version: 13.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: neil.n.carlson at gmail dot com Target Milestone: --- I'm getting an internal compiler error with the following reduced example. Note that the ICE disappears if CLASS(*) is replaced by INTEGER, for example. call foo([1,2]) contains recursive subroutine foo(x) class(*), intent(in) :: x(..) integer :: n select rank (x) rank (0) rank (1) do n = 1, size(x,1) call foo(x(n)) end do end select end subroutine end And the output from compilation: $ gfortran -freport-bug gfortran-20231211.f90 gfortran-20231211.f90:10:20: 10 | call foo(x(n)) | 1 internal compiler error: Segmentation fault 0xd0317f crash_signal ../../gcc/toplev.cc:314 0x82830b gfc_conv_class_to_class(gfc_se*, gfc_expr*, gfc_typespec, bool, bool, bool, bool) ../../gcc/fortran/trans-expr.cc:1207 0x823dff gfc_conv_procedure_call(gfc_se*, gfc_symbol*, gfc_actual_arglist*, gfc_expr*, vec<tree_node*, va_gc, vl_embed>*) ../../gcc/fortran/trans-expr.cc:6661 0x86bc82 gfc_trans_call(gfc_code*, bool, tree_node*, tree_node*, bool) ../../gcc/fortran/trans-stmt.cc:424 0x7ea3eb trans_code ../../gcc/fortran/trans.cc:2297 0x870a63 gfc_trans_simple_do ../../gcc/fortran/trans-stmt.cc:2492 0x870a63 gfc_trans_do(gfc_code*, tree_node*) ../../gcc/fortran/trans-stmt.cc:2624 0x7ea37a trans_code ../../gcc/fortran/trans.cc:2329 0x86ffd0 gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.cc:2353 0x7ea337 trans_code ../../gcc/fortran/trans.cc:2325 0x8672c5 gfc_trans_select_rank_cases ../../gcc/fortran/trans-stmt.cc:3778 0x871b54 gfc_trans_select_rank(gfc_code*) ../../gcc/fortran/trans-stmt.cc:3833 0x7ea077 trans_code ../../gcc/fortran/trans.cc:2349 0x86ffd0 gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.cc:2353 0x7ea337 trans_code ../../gcc/fortran/trans.cc:2325 0x818509 gfc_generate_function_code(gfc_namespace*) ../../gcc/fortran/trans-decl.cc:7715 0x8182fc gfc_generate_contained_functions ../../gcc/fortran/trans-decl.cc:5830 0x8182fc gfc_generate_function_code(gfc_namespace*) ../../gcc/fortran/trans-decl.cc:7647 0x78f0fe translate_all_program_units ../../gcc/fortran/parse.cc:6720 0x78f0fe gfc_parse_file() ../../gcc/fortran/parse.cc:7026