diff options
author | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-03-29 11:39:22 +0000 |
---|---|---|
committer | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-03-29 11:39:22 +0000 |
commit | 82f4ebf64cc27db125f4040bb1533c02d9015f27 (patch) | |
tree | 366c4e4f98f233c8a3984239bb3ced468a1a7db6 /gcc/config/sh | |
parent | 165928da27a7f8ce10f16b45c077707f29ddbfca (diff) | |
download | gcc-82f4ebf64cc27db125f4040bb1533c02d9015f27.tar.gz |
* sh.md (mulsi3): Tag an extra REG_EQUAL note to the middle insn.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26055 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/sh')
-rw-r--r-- | gcc/config/sh/sh.md | 11 |
1 files changed, 10 insertions, 1 deletions
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])); |