]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
revert r270484
authorSegher Boessenkool <segher@kernel.crashing.org>
Fri, 26 Apr 2019 13:49:53 +0000 (15:49 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Fri, 26 Apr 2019 13:49:53 +0000 (15:49 +0200)
I'm leaving the testsuite piece alone.

From-SVN: r270601

gcc/ChangeLog
gcc/lra-spills.c

index 549714c15d7ef2ff601620d942508c34c6f74c7a..0a758bd3a8197896c0fd1e5e547d3dbf26028001 100644 (file)
@@ -1,3 +1,21 @@
+2019-04-26  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR other/90257
+       Revert the revert:
+       2019-04-21  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/90178
+       Revert:
+       2018-11-21  Uros Bizjak  <ubizjak@gmail.com>
+
+       Revert the revert:
+       2013-10-26  Vladimir Makarov  <vmakarov@redhat.com>
+
+       Revert:
+       2013-10-25  Vladimir Makarov  <vmakarov@redhat.com>
+
+       * lra-spills.c (lra_final_code_change): Remove useless move insns.
+
 2019-04-25  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/90240
index 18db79e70a08ca36c77de6c8d1ba1bfd0572a1b5..c19b76a579cf7285096031db1801059c6d578c7a 100644 (file)
@@ -740,6 +740,7 @@ lra_final_code_change (void)
   int i, hard_regno;
   basic_block bb;
   rtx_insn *insn, *curr;
+  rtx set;
   int max_regno = max_reg_num ();
 
   for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
@@ -818,5 +819,19 @@ lra_final_code_change (void)
              }
          if (insn_change_p)
            lra_update_operator_dups (id);
+
+         if ((set = single_set (insn)) != NULL
+             && REG_P (SET_SRC (set)) && REG_P (SET_DEST (set))
+             && REGNO (SET_SRC (set)) == REGNO (SET_DEST (set)))
+           {
+             /* Remove an useless move insn.  IRA can generate move
+                insns involving pseudos.  It is better remove them
+                earlier to speed up compiler a bit.  It is also
+                better to do it here as they might not pass final RTL
+                check in LRA, (e.g. insn moving a control register
+                into itself).  */
+             lra_invalidate_insn_data (insn);
+             delete_insn (insn);
+           }
        }
 }