aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Endo <olegendo@gcc.gnu.org>2023-10-23 22:08:37 +0900
committerOleg Endo <olegendo@gcc.gnu.org>2023-10-23 22:11:01 +0900
commit267e369afbb963d8d84d7a9f0cb9fb18672d99a8 (patch)
tree0ac91aaefbf89d4b0115e29cee3c7197c0a89055
parent9ed6b22eb4188c57bb3f5cdba5a7effa95395186 (diff)
downloadgcc-267e369afbb963d8d84d7a9f0cb9fb18672d99a8.zip
gcc-267e369afbb963d8d84d7a9f0cb9fb18672d99a8.tar.gz
gcc-267e369afbb963d8d84d7a9f0cb9fb18672d99a8.tar.bz2
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.
-rw-r--r--gcc/config/sh/sh_treg_combine.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/config/sh/sh_treg_combine.cc b/gcc/config/sh/sh_treg_combine.cc
index 9f6a89f..9b35960 100644
--- a/gcc/config/sh/sh_treg_combine.cc
+++ b/gcc/config/sh/sh_treg_combine.cc
@@ -729,7 +729,14 @@ sh_treg_combine::record_set_of_reg (rtx reg, rtx_insn *start_insn,
}
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;