------- Comment #7 from hjl dot tools at gmail dot com 2008-05-16 21:54 ------- find_reloads in reload.c has
/* Special case a simple move with an input reload and a destination of a hard reg, if the hard reg is ok, use it. */ for (i = 0; i < n_reloads; i++) if (rld[i].when_needed == RELOAD_FOR_INPUT && GET_CODE (PATTERN (insn)) == SET && REG_P (SET_DEST (PATTERN (insn))) && (SET_SRC (PATTERN (insn)) == rld[i].in || SET_SRC (PATTERN (insn)) == rld[i].in_reg) && !elimination_target_reg_p (SET_DEST (PATTERN (insn)))) { rtx dest = SET_DEST (PATTERN (insn)); unsigned int regno = REGNO (dest); If it can be extended to handle vector instructions, it will help this bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36222