diff options
author | Jeffrey A Law <law@cygnus.com> | 1998-09-15 22:01:08 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-09-15 16:01:08 -0600 |
commit | 54d65918774e3854206d61c82dbb39d2241eb603 (patch) | |
tree | f809acae4b5b12a2757aa56eafd013c9f83c4298 /gcc | |
parent | c09a3c2e15620f80528bc3b38562d9f6b9c28e34 (diff) | |
download | gcc-54d65918774e3854206d61c82dbb39d2241eb603.zip gcc-54d65918774e3854206d61c82dbb39d2241eb603.tar.gz gcc-54d65918774e3854206d61c82dbb39d2241eb603.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 16 |
2 files changed, 17 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6d40dc2..d791d77 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 <crux@pool.informatik.rwth-aachen.de> * i386.h (PREFERRED_RELOAD_CLASS): For standard 387 constants, diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index a3eab2a..4164204 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); |