aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-09-15 22:01:08 +0000
committerJeff Law <law@gcc.gnu.org>1998-09-15 16:01:08 -0600
commit54d65918774e3854206d61c82dbb39d2241eb603 (patch)
treef809acae4b5b12a2757aa56eafd013c9f83c4298
parentc09a3c2e15620f80528bc3b38562d9f6b9c28e34 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/pa/pa.c16
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);