aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-10-26 05:51:04 +0000
committerRichard Stallman <rms@gnu.org>1992-10-26 05:51:04 +0000
commit58b1581b23694181ffde4cea00c941727379d050 (patch)
treebbbb3ef4fab551c86480bb4a030b999313a8fda1
parent37548fa3f38cafca60e654671cec44c2ae93283b (diff)
downloadgcc-58b1581b23694181ffde4cea00c941727379d050.zip
gcc-58b1581b23694181ffde4cea00c941727379d050.tar.gz
gcc-58b1581b23694181ffde4cea00c941727379d050.tar.bz2
(emit_reload_insns): If not -O, Don't try find_equiv_reg.
(choose_reload_regs): If not -O, don't inherit reloads. From-SVN: r2607
-rw-r--r--gcc/reload1.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index d9b325b..88c5e6d 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -4288,9 +4288,13 @@ choose_reload_regs (insn, avoid_return_reg)
COPY_HARD_REG_SET (save_reload_reg_used_in_op_addr,
reload_reg_used_in_op_addr);
- /* Try first with inheritance, then turning it off. */
+ /* If -O, try first with inheritance, then turning it off.
+ If not -O, don't do inheritance.
+ Using inheritance when not optimizing leads to paradoxes
+ with fp on the 68k: fp numbers (not NaNs) fail to be equal to themselves
+ because one side of the comparison might be inherited. */
- for (inheritance = 1; inheritance >= 0; inheritance--)
+ for (inheritance = optimize > 0; inheritance >= 0; inheritance--)
{
/* Process the reloads in order of preference just found.
Beyond this point, subregs can be found in reload_reg_rtx.
@@ -4763,7 +4767,8 @@ emit_reload_insns (insn)
register. */
if (reload_secondary_reload[j] >= 0
- && reload_secondary_icode[j] == CODE_FOR_nothing)
+ && reload_secondary_icode[j] == CODE_FOR_nothing
+ && optimize)
oldequiv
= find_equiv_reg (old, insn,
reload_reg_class[reload_secondary_reload[j]],
@@ -4778,7 +4783,7 @@ emit_reload_insns (insn)
or has yet to be emitted, in which case it doesn't matter
because we will use this equiv reg right away. */
- if (oldequiv == 0
+ if (oldequiv == 0 && optimize
&& (GET_CODE (old) == MEM
|| (GET_CODE (old) == REG
&& REGNO (old) >= FIRST_PSEUDO_REGISTER