+2003-02-16 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (arm_reload_in_hi): Ensure that the scratch register does
+ not overlap the final result register.
+
2003-02-16 Arend Bayer <arend.bayer@web.de>
Richard Henderson <rth@redhat.com>
}
}
- scratch = gen_rtx_REG (SImode, REGNO (operands[2]));
+ /* Operands[2] may overlap operands[0] (though it won't overlap
+ operands[1]), that's why we asked for a DImode reg -- so we can
+ use the bit that does not overlap. */
+ if (REGNO (operands[2]) == REGNO (operands[0]))
+ scratch = gen_rtx_REG (SImode, REGNO (operands[2]) + 1);
+ else
+ scratch = gen_rtx_REG (SImode, REGNO (operands[2]));
+
emit_insn (gen_zero_extendqisi2 (scratch,
gen_rtx_MEM (QImode,
plus_constant (base,