diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-28 17:05:59 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-28 17:05:59 -0500 |
commit | 39b56c2ac762c1f0516315dee6e79cd69527378d (patch) | |
tree | b7fac37213485649c4453d6dd3ae41fe1df89cbd /gcc | |
parent | 3c80f7ed512d0f3c1a57e8fab76fbd53c8dd12b7 (diff) | |
download | gcc-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.c | 8 |
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); } |