------- Comment #7 from rguenth at gcc dot gnu dot org 2008-04-25 15:43 ------- So, the problem is in move_block_to_reg that copies the argument piecewise to regs like
for (i = 0; i < nregs; i++) emit_move_insn (gen_rtx_REG (word_mode, regno + i), operand_subword_force (x, i, mode)); not accounting for the fact that the last reg may be only partially filled from the memory. But the necessary information to deal with this is also not available in this function currently. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36043