[SH,committed] Fix PR 111001
Checks
Commit Message
The attached patch fixes PR 111001.
Committed to master, cherry-picked to GCC-13, GCC-12 and GCC-11.
Sanity tested with 'make all-gcc'.
Bootstrapped on GCC-13 sh4-linux by Adrian.
Cheers,
Oleg
gcc/ChangeLog:
PR target/111001
* config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg):
Skip over nop move insns.
From 4414818f4e5de54ea3c353e2ebb2e79a89ae211b Mon Sep 17 00:00:00 2001
From: Oleg Endo <olegendo@gcc.gnu.org>
Date: Mon, 23 Oct 2023 22:08:37 +0900
Subject: [PATCH] SH: Fix PR 111001
gcc/ChangeLog:
PR target/111001
* config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg):
Skip over nop move insns.
---
gcc/config/sh/sh_treg_combine.cc | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
@@ -731,9 +731,16 @@ sh_treg_combine::record_set_of_reg (rtx reg, rtx_insn *start_insn,
new_entry.cstore_type = cstore_inverted;
}
else if (REG_P (new_entry.cstore.set_src ()))
{
- // If it's a reg-reg copy follow the copied reg.
+ // If it's a reg-reg copy follow the copied reg, but ignore
+ // nop copies of the reg onto itself.
+ if (REGNO (new_entry.cstore.set_src ()) == REGNO (reg))
+ {
+ i = prev_nonnote_nondebug_insn_bb (i);
+ continue;
+ }
+
new_entry.cstore_reg_reg_copies.push_back (new_entry.cstore);
reg = new_entry.cstore.set_src ();
i = new_entry.cstore.insn;
--
libgit2 1.3.2