From: Jeffrey A Law Date: Tue, 15 Sep 1998 22:01:08 +0000 (+0000) Subject: pa.c (emit_move_sequence): Do not replace a pseudo with its equivalent memory locatio... X-Git-Tag: prereleases/libgcj-0.1~3031 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=54d65918774e3854206d61c82dbb39d2241eb603;p=thirdparty%2Fgcc.git pa.c (emit_move_sequence): Do not replace a pseudo with its equivalent memory location unless... � * pa.c (emit_move_sequence): Do not replace a pseudo with its equivalent memory location unless we have been provided a scratch register. Similarly do not call find_replacement unless a scratch register has been provided. From-SVN: r22438 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6d40dc214368..d791d774dd80 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Tue Sep 15 22:59:52 1998 Jeffrey A Law (law@cygnus.com) + + * pa.c (emit_move_sequence): Do not replace a pseudo with its + equivalent memory location unless we have been provided a scratch + register. Similarly do not call find_replacement unless a + scratch register has been provided. + Tue Sep 15 19:23:01 1998 Bernd Schmidt * i386.h (PREFERRED_RELOAD_CLASS): For standard 387 constants, diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index a3eab2aebf5e..41642041e32f 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -1086,10 +1086,12 @@ emit_move_sequence (operands, mode, scratch_reg) register rtx operand1 = operands[1]; register rtx tem; - if (reload_in_progress && GET_CODE (operand0) == REG + if (scratch_reg + && reload_in_progress && GET_CODE (operand0) == REG && REGNO (operand0) >= FIRST_PSEUDO_REGISTER) operand0 = reg_equiv_mem[REGNO (operand0)]; - else if (reload_in_progress && GET_CODE (operand0) == SUBREG + else if (scratch_reg + && reload_in_progress && GET_CODE (operand0) == SUBREG && GET_CODE (SUBREG_REG (operand0)) == REG && REGNO (SUBREG_REG (operand0)) >= FIRST_PSEUDO_REGISTER) { @@ -1097,10 +1099,12 @@ emit_move_sequence (operands, mode, scratch_reg) operand0 = alter_subreg (operand0); } - if (reload_in_progress && GET_CODE (operand1) == REG + if (scratch_reg + && reload_in_progress && GET_CODE (operand1) == REG && REGNO (operand1) >= FIRST_PSEUDO_REGISTER) operand1 = reg_equiv_mem[REGNO (operand1)]; - else if (reload_in_progress && GET_CODE (operand1) == SUBREG + else if (scratch_reg + && reload_in_progress && GET_CODE (operand1) == SUBREG && GET_CODE (SUBREG_REG (operand1)) == REG && REGNO (SUBREG_REG (operand1)) >= FIRST_PSEUDO_REGISTER) { @@ -1108,11 +1112,11 @@ emit_move_sequence (operands, mode, scratch_reg) operand1 = alter_subreg (operand1); } - if (reload_in_progress && GET_CODE (operand0) == MEM + if (scratch_reg && reload_in_progress && GET_CODE (operand0) == MEM && ((tem = find_replacement (&XEXP (operand0, 0))) != XEXP (operand0, 0))) operand0 = gen_rtx_MEM (GET_MODE (operand0), tem); - if (reload_in_progress && GET_CODE (operand1) == MEM + if (scratch_reg && reload_in_progress && GET_CODE (operand1) == MEM && ((tem = find_replacement (&XEXP (operand1, 0))) != XEXP (operand1, 0))) operand1 = gen_rtx_MEM (GET_MODE (operand1), tem);