https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86545
Bug ID: 86545 Summary: [6/7/8/9 Regression] ICE in transfer_expr on invalid WRITE statement Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: janus at gcc dot gnu.org Target Milestone: --- Test case: module m type tString character(len=:), allocatable :: cs end type interface my_trim module procedure trim_string end interface contains elemental function trim_string(self) result(str) type(tString) :: str class(tString), intent(in) :: self end function end module program p use m type(tString) :: s ! write(*,*) trim_string(s) ! correctly rejected write(*,*) my_trim(s) ! ICE end This invalid code gives an ICE with all recent gfortran versions (4.9 up to trunk). On trunk the backtrace looks like this: write(*,*) my_trim(s) ! ICE internal compiler error: in transfer_expr, at fortran/trans-io.c:2399 0x7908d0 transfer_expr /home/janus/gcc/trunk/gcc/fortran/trans-io.c:2399 0x79027f transfer_expr /home/janus/gcc/trunk/gcc/fortran/trans-io.c:2496 0x792eb2 gfc_trans_transfer(gfc_code*) /home/janus/gcc/trunk/gcc/fortran/trans-io.c:2664 0x71cce7 trans_code /home/janus/gcc/trunk/gcc/fortran/trans.c:2044 0x78f8d0 build_dt /home/janus/gcc/trunk/gcc/fortran/trans-io.c:2027 0x71cd07 trans_code /home/janus/gcc/trunk/gcc/fortran/trans.c:2016 0x751925 gfc_generate_function_code(gfc_namespace*) /home/janus/gcc/trunk/gcc/fortran/trans-decl.c:6469 0x6d0860 translate_all_program_units /home/janus/gcc/trunk/gcc/fortran/parse.c:6125 0x6d0860 gfc_parse_file() /home/janus/gcc/trunk/gcc/fortran/parse.c:6328 0x719b4f gfc_be_parse_file /home/janus/gcc/trunk/gcc/fortran/f95-lang.c:204 gfortran 4.8 rejects it without ICE: character(len=:), allocatable :: cs 1 Error: Deferred-length character component 'cs' at (1) is not yet supported So, technically the ICE is a regression.