]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
SH: Fix PR 111001
authorOleg Endo <olegendo@gcc.gnu.org>
Mon, 23 Oct 2023 13:08:37 +0000 (22:08 +0900)
committerOleg Endo <olegendo@gcc.gnu.org>
Mon, 23 Oct 2023 13:11:01 +0000 (22:11 +0900)
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

index 9f6a89fa71fb1888c599a6ae83429e6cb985daec..9b35960c8c2b339466669bd9f404e0b98196bb28 100644 (file)
@@ -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;