summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-28 19:36:04 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-28 19:36:04 +0000
commit0e460feb6f2c7352df8bcfd754486716a2d9c2e6 (patch)
tree8fa2ed45b53c76593168ff3146bcd5bb17ba6a54
parent1aa1d9dadcdc8e202223dd01e4f3344fba52ca89 (diff)
downloadppe42-gcc-0e460feb6f2c7352df8bcfd754486716a2d9c2e6.tar.gz
ppe42-gcc-0e460feb6f2c7352df8bcfd754486716a2d9c2e6.zip
Never set reload_override_in for optional reloads.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37103 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/reload1.c15
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c0653d8ce91..755ad30eb11 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -3,6 +3,8 @@
* reload.c (find_reloads): Distinguish "wins" so that we know whether
a given operand won because of a matching constraint or not; then use
that information to compute goal_alternative_matched properly.
+ * reload1.c (choose_reload_regs): Never set reload_override_in for an
+ optional reload.
2000-10-28 Neil Booth <neilb@earthling.net>
diff --git a/gcc/reload1.c b/gcc/reload1.c
index c194361118d..66c98f54595 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -5417,9 +5417,12 @@ choose_reload_regs (chain)
|| (rld[r].out && rld[r].reg_rtx
&& rtx_equal_p (rld[r].out, rld[r].reg_rtx)))
{
- reload_override_in[r] = last_reg;
- reload_inheritance_insn[r]
- = reg_reloaded_insn[i];
+ if (! rld[r].optional)
+ {
+ reload_override_in[r] = last_reg;
+ reload_inheritance_insn[r]
+ = reg_reloaded_insn[i];
+ }
}
else
{
@@ -5518,7 +5521,8 @@ choose_reload_regs (chain)
if (reg_overlap_mentioned_for_reload_p (equiv,
reload_earlyclobbers[i]))
{
- reload_override_in[r] = equiv;
+ if (! rld[r].optional)
+ reload_override_in[r] = equiv;
equiv = 0;
break;
}
@@ -5541,7 +5545,8 @@ choose_reload_regs (chain)
case RELOAD_OTHER:
case RELOAD_FOR_INPUT:
case RELOAD_FOR_OPERAND_ADDRESS:
- reload_override_in[r] = equiv;
+ if (! rld[r].optional)
+ reload_override_in[r] = equiv;
/* Fall through. */
default:
equiv = 0;
OpenPOWER on IntegriCloud