MODULE BUG_MODULE TYPE::A_TYPE END TYPE A_TYPE TYPE,EXTENDS(A_TYPE)::B_TYPE TYPE(A_TYPE),DIMENSION(:),ALLOCATABLE::A_LIST END TYPE B_TYPE TYPE::C_TYPE TYPE(B_TYPE),DIMENSION(:),ALLOCATABLE::B_LIST CONTAINS PROCEDURE::DO_SOMETHING END TYPE C_TYPE CONTAINS SUBROUTINE DO_SOMETHING(DTV) CLASS(C_TYPE) :: DTV CLASS(A_TYPE),POINTER::A_POINTER SELECT TYPE(A_POINTER) TYPE IS (B_TYPE) DTV%B_LIST(1)=A_POINTER END SELECT END SUBROUTINE DO_SOMETHING END MODULE BUG_MODULE GNU Fortran (GCC) 4.6.0 20100921 (experimental) gfortran -c BUG_MODULE.f03 BUG_MODULE.f03: In Funktion »do_something«: BUG_MODULE.f03:23:0: interner Compiler-Fehler: in fold_convert_loc, bei fold-const.c:2021
Fails in gfc_trans_scalar_assign for the line: gfc_add_modify (&block, lse->expr, fold_convert (TREE_TYPE (lse->expr), rse->expr)); as switch (TREE_CODE (type)) in fold_convert reaches gcc_unreachable. Hereby, (gdb) p lse->expr->common.type->base->code $1 = RECORD_TYPE (gdb) p rse->expr->common.type->base->code $2 = RECORD_TYPE And both types are different, cf. (gdb) p rse->expr->common.type $4 = (tree) 0x2aaaad533e70 (gdb) p lse->expr->common.type $5 = (tree) 0x2aaaad538000
Confirmed as a regression: no ICE for branch fortran-exp revision 158215, ICE for branch fortran-dev revision 163718.
I do not see the error on x86_64-unknown-linux-gnu at r164767. Can anyone confirm that?
(In reply to comment #3) > I do not see the error on x86_64-unknown-linux-gnu at r164767. Can anyone > confirm that? Ditto for my 4.6.0 20100930 built also on x86_64-unknown-linux-gnu; I tried it using valgrind.
(In reply to comment #4) > (In reply to comment #3) > > I do not see the error on x86_64-unknown-linux-gnu at r164767. Can anyone > > confirm that? > > Ditto for my 4.6.0 20100930 built also on x86_64-unknown-linux-gnu; I tried it > using valgrind. Ok, so I guess we can close this one (supposedly it was fixed by some middle-end patch). Hans, if you encounter the issue after all, please feel free to re-open.