Commit 13986a58 by Uros Bizjak Committed by Uros Bizjak

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.

From-SVN: r266358
parent 4fd723f8
2018-11-21 Uros Bizjak <ubizjak@gmail.com> 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.
2018-11-21 Uros Bizjak <ubizjak@gmail.com>
PR middle-end/88129 PR middle-end/88129
* function.c (expand_function_end): Do not emit extra blockage insn. * function.c (expand_function_end): Do not emit extra blockage insn.
...@@ -740,6 +740,7 @@ lra_final_code_change (void) ...@@ -740,6 +740,7 @@ lra_final_code_change (void)
int i, hard_regno; int i, hard_regno;
basic_block bb; basic_block bb;
rtx_insn *insn, *curr; rtx_insn *insn, *curr;
rtx set;
int max_regno = max_reg_num (); int max_regno = max_reg_num ();
for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++) for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
...@@ -818,5 +819,19 @@ lra_final_code_change (void) ...@@ -818,5 +819,19 @@ lra_final_code_change (void)
} }
if (insn_change_p) if (insn_change_p)
lra_update_operator_dups (id); 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);
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment