From d6ea820e70219585e4f889a2c5d8b4825f3018f6 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Fri, 26 Apr 2019 15:49:53 +0200 Subject: [PATCH] revert r270484 I'm leaving the testsuite piece alone. From-SVN: r270601 --- gcc/ChangeLog | 18 ++++++++++++++++++ gcc/lra-spills.c | 15 +++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 549714c15d7e..0a758bd3a819 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2019-04-26 Segher Boessenkool + + PR other/90257 + Revert the revert: + 2019-04-21 H.J. Lu + + PR target/90178 + Revert: + 2018-11-21 Uros Bizjak + + Revert the revert: + 2013-10-26 Vladimir Makarov + + Revert: + 2013-10-25 Vladimir Makarov + + * lra-spills.c (lra_final_code_change): Remove useless move insns. + 2019-04-25 Jakub Jelinek PR tree-optimization/90240 diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c index 18db79e70a08..c19b76a579cf 100644 --- a/gcc/lra-spills.c +++ b/gcc/lra-spills.c @@ -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); + } } } -- 2.47.2