https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89077
--- Comment #12 from Harald Anlauf <anlauf at gmx dot de> --- Further variant: ==> f4.f90 <== character(1), save :: y = transfer ([('a'(1:1),i=1,1)], 'x') print *, y end generates exactly the same code as f3, although it passes along slightly different pathes during simplification. BTW, I noticed that f1 produces an IMHO insane dump-tree, with a call to _gfortran_internal_pack! I'd never expected to get such inefficient code in that case.