https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102729
Bug ID: 102729 Summary: Assumed rank: ICE when passing noncontiguous to CONTIGUOUS assume rank (assumed-rank loop handling) Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org Target Milestone: --- Related: PR 102708, PR54753, PR102641 That's an extended version of gfortran.dg/c-interop/fc-descriptor-7.f90 - - - - integer(C_INT), target :: bb(10,10) call ftest (bb(2:10:2, :), is_cont=.false._c_bool) ... subroutine ftest_ar (a, is_cont) use iso_c_binding integer(C_INT) :: a(..) logical(c_bool), value, intent(in) :: is_cont ... !call ftest_ar_con (a, is_cont=.true._c_bool) ! <<< fixme! end subroutine subroutine ftest_ar_con (a, is_cont) use iso_c_binding integer(C_INT), contiguous :: a(..) logical(c_bool), value, intent(in) :: is_cont .... That gives an ICE as the loop handling does not work for rank == -1 (= assumed-rank arrays) 124 | call ftest_ar_con (a, is_cont=.true._c_bool) ! <<< fixme! internal compiler error: in gfc_trans_create_temp_array, at fortran/trans-array.c:1491 0x6799b2 gfc_trans_create_temp_array(stmtblock_t*, stmtblock_t*, gfc_ss*, tree_node*, tree_node*, bool, bool, bool, locus*) fortran/trans-array.c:1491 0x98af9b gfc_conv_loop_setup(gfc_loopinfo*, locus*) fortran/trans-array.c:5449 0x9be118 gfc_conv_subref_array_arg(gfc_se*, gfc_expr*, int, sym_intent, bool, gfc_symbol const*, char const*, gfc_symbol*, bool) fortran/trans-expr.c:4976