Commit b383e255 by Eric Botcazou Committed by Eric Botcazou

re PR rtl-optimization/54290 (wrong code at -O2 with large offset)

	PR rtl-optimization/54290
	PR rtl-optimization/54644
	* reload1.c (choose_reload_regs): Fix thinko in previous change.

From-SVN: r191609
parent 88a4c78b
2012-09-21 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/54290
PR rtl-optimization/54644
* reload1.c (choose_reload_regs): Fix thinko in previous change.
2012-09-20 Segher Boessenkool <segher@kernel.crashing.org> 2012-09-20 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (define_split for plus_eqsi): * config/rs6000/rs6000.md (define_split for plus_eqsi):
......
...@@ -6991,16 +6991,17 @@ choose_reload_regs (struct insn_chain *chain) ...@@ -6991,16 +6991,17 @@ choose_reload_regs (struct insn_chain *chain)
If we succeeded removing some reload and we are doing a preliminary If we succeeded removing some reload and we are doing a preliminary
pass just to remove such reloads, make another pass, since the pass just to remove such reloads, make another pass, since the
removal of one reload might allow us to inherit another one. */ removal of one reload might allow us to inherit another one. */
else if (pass else if (rld[r].in
&& rld[r].in
&& rld[r].out != rld[r].in && rld[r].out != rld[r].in
&& remove_address_replacements (rld[r].in)) && remove_address_replacements (rld[r].in))
{
if (pass)
pass = 2; pass = 2;
}
#ifdef SECONDARY_MEMORY_NEEDED #ifdef SECONDARY_MEMORY_NEEDED
/* If we needed a memory location for the reload, we also have to /* If we needed a memory location for the reload, we also have to
remove its related reloads. */ remove its related reloads. */
else if (pass else if (rld[r].in
&& rld[r].in
&& rld[r].out != rld[r].in && rld[r].out != rld[r].in
&& (tem = replaced_subreg (rld[r].in), REG_P (tem)) && (tem = replaced_subreg (rld[r].in), REG_P (tem))
&& REGNO (tem) < FIRST_PSEUDO_REGISTER && REGNO (tem) < FIRST_PSEUDO_REGISTER
...@@ -7009,7 +7010,10 @@ choose_reload_regs (struct insn_chain *chain) ...@@ -7009,7 +7010,10 @@ choose_reload_regs (struct insn_chain *chain)
&& remove_address_replacements && remove_address_replacements
(get_secondary_mem (tem, rld[r].inmode, rld[r].opnum, (get_secondary_mem (tem, rld[r].inmode, rld[r].opnum,
rld[r].when_needed))) rld[r].when_needed)))
{
if (pass)
pass = 2; pass = 2;
}
#endif #endif
} }
} }
......
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