Well, we simply don't handle simplification of TRANSFER with constant substrings, so it gives ICEs here and there:
$ cat b.f90 character(len=1), parameter :: t = "x" write (*,*) transfer(t(1:1),0) end $ gfortran b.f90 f951: internal compiler error: in gfc_target_encode_expr, at fortran/target-memory.c:234 -- Summary: TRANSFER of constant substrings Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: fxcoudert at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36176