------- Comment #2 from kargl at gcc dot gnu dot org 2010-09-10 15:20 ------- The -fdump-tree-original for HJ's original code look like
rcrdrd (character(kind=1)[1:4] & restrict vtyp, integer(kind=4) _vtyp) { static character(kind=1) dbl[1:1] = "D"; (MEM[(c_char * {ref-all})vtyp] = MEM[(c_char * {ref-all})&dbl];, (void *) vtyp;); __builtin_memset ((void *) vtyp + 1, 32, 3); } If I increase the length of DBL to 2, then the dump looks like rcrdrd (character(kind=1)[1:4] & restrict vtyp, integer(kind=4) _vtyp) { static character(kind=1) dbl[1:2] = "D "; __builtin_memmove ((void *) vtyp, (void *) &dbl, 2); __builtin_memset ((void *) vtyp + 2, 32, 2); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45636