* sh.md (mulsi3): Tag an extra REG_EQUAL note to the middle insn.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Mon, 29 Mar 1999 11:39:22 +0000 (11:39 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Mon, 29 Mar 1999 11:39:22 +0000 (12:39 +0100)
From-SVN: r26055

gcc/ChangeLog
gcc/config/sh/sh.md

index 7a3bdeee1b33ea56b2337d96fc1d9574f017816a..c0461f4629b78adc7c17b226b671542b0727adf6 100644 (file)
@@ -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
index f572d6f343dfa4571296bbed660969725c23bc53..f5bd532f1675b6af764d65ffbeca1ac1e7aed4f0 100644 (file)
   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]));