From aa4778b68476a63cc7e54a9cee1664a2ad0fcacc Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Mon, 29 Mar 1999 11:39:22 +0000 Subject: [PATCH] * sh.md (mulsi3): Tag an extra REG_EQUAL note to the middle insn. From-SVN: r26055 --- gcc/ChangeLog | 4 ++++ gcc/config/sh/sh.md | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a3bdeee1b3..c0461f4629b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Mon Mar 29 20:35:49 1999 J"orn Rennecke + + * sh.md (mulsi3): Tag an extra REG_EQUAL note to the middle insn. + Mon Mar 29 11:50:34 1999 Jerry Quinn * 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 f572d6f343d..f5bd532f167 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]));