aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-11-04 20:04:04 -0800
committerRichard Henderson <rth@gcc.gnu.org>1998-11-04 20:04:04 -0800
commit6c61c2bba11355ba204a14ea196235d5eeeb1e1e (patch)
tree193ccdf22fa935d00929bbdd597d7d4974aeadf1
parent8f5d685581c011dd907c692b63b4e340a6de9b8d (diff)
downloadgcc-6c61c2bba11355ba204a14ea196235d5eeeb1e1e.zip
gcc-6c61c2bba11355ba204a14ea196235d5eeeb1e1e.tar.gz
gcc-6c61c2bba11355ba204a14ea196235d5eeeb1e1e.tar.bz2
alpha.md (addsi3, subsi3): No new temporaries once cse is no longer expected.
* alpha.md (addsi3, subsi3): No new temporaries once cse is no longer expected. From-SVN: r23537
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.md30
2 files changed, 27 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f851757..818cff0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Nov 5 04:03:06 1998 Richard Henderson <rth@cygnus.com>
+
+ * alpha.md (addsi3, subsi3): No new temporaries once cse is
+ no longer expected.
+
Thu Nov 5 03:29:19 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (addsi3, subsi3): Expand to a DImode temporary so as
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index c88497e..8ae03e6 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -427,10 +427,17 @@
""
"
{
- rtx tmp = gen_reg_rtx (DImode);
- emit_insn (gen_adddi3 (tmp, gen_lowpart (DImode, operands[1]),
- gen_lowpart (DImode, operands[2])));
- emit_move_insn (operands[0], gen_lowpart (SImode, tmp));
+ rtx op1 = gen_lowpart (DImode, operands[1]);
+ rtx op2 = gen_lowpart (DImode, operands[2]);
+
+ if (! cse_not_expected)
+ {
+ rtx tmp = gen_reg_rtx (DImode);
+ emit_insn (gen_adddi3 (tmp, op1, op2));
+ emit_move_insn (operands[0], gen_lowpart (SImode, tmp));
+ }
+ else
+ emit_insn (gen_adddi3 (gen_lowpart (DImode, operands[0]), op1, op2));
DONE;
} ")
@@ -714,10 +721,17 @@
""
"
{
- rtx tmp = gen_reg_rtx (DImode);
- emit_insn (gen_subdi3 (tmp, gen_lowpart (DImode, operands[1]),
- gen_lowpart (DImode, operands[2])));
- emit_move_insn (operands[0], gen_lowpart (SImode, tmp));
+ rtx op1 = gen_lowpart (DImode, operands[1]);
+ rtx op2 = gen_lowpart (DImode, operands[2]);
+
+ if (! cse_not_expected)
+ {
+ rtx tmp = gen_reg_rtx (DImode);
+ emit_insn (gen_subdi3 (tmp, op1, op2));
+ emit_move_insn (operands[0], gen_lowpart (SImode, tmp));
+ }
+ else
+ emit_insn (gen_subdi3 (gen_lowpart (DImode, operands[0]), op1, op2));
DONE;
} ")