Commit ef61d1ab by Andreas Krebbel Committed by Vladimir Makarov

re PR rtl-optimization/83147 (LRA inheritance undo on multiple sets problem)

2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR rtl-optimization/83147
	* lra-constraints.c (remove_inheritance_pseudos): Use
	lra_substitute_pseudo_within_insn.

From-SVN: r256902
parent dba99244
2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR rtl-optimization/83147
* lra-constraints.c (remove_inheritance_pseudos): Use
lra_substitute_pseudo_within_insn.
2018-01-19 Tom de Vries <tom@codesourcery.com> 2018-01-19 Tom de Vries <tom@codesourcery.com>
Cesar Philippidis <cesar@codesourcery.com> Cesar Philippidis <cesar@codesourcery.com>
......
...@@ -6719,10 +6719,12 @@ remove_inheritance_pseudos (bitmap remove_pseudos) ...@@ -6719,10 +6719,12 @@ remove_inheritance_pseudos (bitmap remove_pseudos)
{ {
lra_assert (GET_MODE (SET_SRC (prev_set)) lra_assert (GET_MODE (SET_SRC (prev_set))
== GET_MODE (regno_reg_rtx[sregno])); == GET_MODE (regno_reg_rtx[sregno]));
if (GET_CODE (SET_SRC (set)) == SUBREG) /* Although we have a single set, the insn can
SUBREG_REG (SET_SRC (set)) = SET_SRC (prev_set); contain more one sregno register occurrence
else as a source. Change all occurrences. */
SET_SRC (set) = SET_SRC (prev_set); lra_substitute_pseudo_within_insn (curr_insn, sregno,
SET_SRC (prev_set),
false);
/* As we are finishing with processing the insn /* As we are finishing with processing the insn
here, check the destination too as it might here, check the destination too as it might
inheritance pseudo for another pseudo. */ inheritance pseudo for another pseudo. */
......
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