aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1999-03-29 11:39:22 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1999-03-29 12:39:22 +0100
commitaa4778b68476a63cc7e54a9cee1664a2ad0fcacc (patch)
tree366c4e4f98f233c8a3984239bb3ced468a1a7db6
parent51c2de46b8059227227b8ab064752d5d4e346ae1 (diff)
downloadgcc-aa4778b68476a63cc7e54a9cee1664a2ad0fcacc.zip
gcc-aa4778b68476a63cc7e54a9cee1664a2ad0fcacc.tar.gz
gcc-aa4778b68476a63cc7e54a9cee1664a2ad0fcacc.tar.bz2
* sh.md (mulsi3): Tag an extra REG_EQUAL note to the middle insn.
From-SVN: r26055
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/sh/sh.md11
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7a3bdee..c0461f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Mon Mar 29 20:35:49 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.md (mulsi3): Tag an extra REG_EQUAL note to the middle insn.
+
Mon Mar 29 11:50:34 1999 Jerry Quinn <jquinn@nortelnetworks.com>
* pa.h (HAVE_PRE_INCREMENT): Disable when optimizing for a PA8000
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index f572d6f..f5bd532 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -1112,8 +1112,17 @@
else
{
rtx macl = gen_rtx_REG (SImode, MACL_REG);
+ rtx giv_insn;
+
first = emit_insn (gen_mul_l (operands[1], operands[2]));
- emit_insn (gen_movsi_i ((operands[0]), macl));
+ /* consec_sets_giv can only recognize the first insn that sets a
+ giv as the giv insn. So we must tag this also with a REG_EQUAL
+ note. */
+ giv_insn = emit_insn (gen_movsi_i ((operands[0]), macl));
+ REG_NOTES (giv_insn)
+ = gen_rtx_EXPR_LIST (REG_EQUAL,
+ gen_rtx_MULT (SImode, operands[1], operands[2]),
+ REG_NOTES (giv_insn));
/* The sequence must end in a no-op move, lest cse puts macl in its
tables and does invalid substitutions. */
last = emit_insn (gen_movsi_i ((operands[0]), operands[0]));