aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-10-28 17:05:59 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1992-10-28 17:05:59 -0500
commit39b56c2ac762c1f0516315dee6e79cd69527378d (patch)
treeb7fac37213485649c4453d6dd3ae41fe1df89cbd /gcc
parent3c80f7ed512d0f3c1a57e8fab76fbd53c8dd12b7 (diff)
downloadgcc-39b56c2ac762c1f0516315dee6e79cd69527378d.zip
gcc-39b56c2ac762c1f0516315dee6e79cd69527378d.tar.gz
gcc-39b56c2ac762c1f0516315dee6e79cd69527378d.tar.bz2
(gen_input_reload): In PLUS, if OP0 and OP1 are the same, use
RELOADREG when generating the addition. From-SVN: r2643
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reload1.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 88c5e6d..f1933d7 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -5753,6 +5753,14 @@ gen_input_reload (reloadreg, in, before_insn)
tem = op0, op0 = op1, op1 = tem;
emit_insn_before (gen_move_insn (reloadreg, op0), before_insn);
+
+ /* If OP0 and OP1 are the same, we can use RELOADREG for OP1.
+ This fixes a problem on the 32K where the stack pointer cannot
+ be used as an operand of an add insn. */
+
+ if (rtx_equal_p (op0, op1))
+ op1 = reloadreg;
+
emit_insn_before (gen_add2_insn (reloadreg, op1), before_insn);
}