Commit 907c53bb by Bernd Schmidt Committed by Bernd Schmidt

re PR c/45054 (struct-by-value-1.c fail.)

	PR c/45054
	* reload1.c (replace_pseudos_in): Use eliminate_regs_1, allowing
	invariants.  Check for reg_equiv_invariant.
	(reload): Assert that spilled_pseudos is empty when returning.

From-SVN: r164733
parent 22939744
...@@ -11,6 +11,11 @@ ...@@ -11,6 +11,11 @@
costs_add_n_insns): New inline functions. costs_add_n_insns): New inline functions.
(get_full_rtx_cost): Declare. (get_full_rtx_cost): Declare.
PR c/45054
* reload1.c (replace_pseudos_in): Use eliminate_regs_1, allowing
invariants. Check for reg_equiv_invariant.
(reload): Assert that spilled_pseudos is empty when returning.
2010-09-29 Kai Tietz <kai.tietz@onevision.com> 2010-09-29 Kai Tietz <kai.tietz@onevision.com>
* config/i386/mingw32.h (TARGET_64BIT): replaced by * config/i386/mingw32.h (TARGET_64BIT): replaced by
...@@ -588,7 +588,7 @@ replace_pseudos_in (rtx *loc, enum machine_mode mem_mode, rtx usage) ...@@ -588,7 +588,7 @@ replace_pseudos_in (rtx *loc, enum machine_mode mem_mode, rtx usage)
if (regno < FIRST_PSEUDO_REGISTER) if (regno < FIRST_PSEUDO_REGISTER)
return; return;
x = eliminate_regs (x, mem_mode, usage); x = eliminate_regs_1 (x, mem_mode, usage, true, false);
if (x != *loc) if (x != *loc)
{ {
*loc = x; *loc = x;
...@@ -598,6 +598,8 @@ replace_pseudos_in (rtx *loc, enum machine_mode mem_mode, rtx usage) ...@@ -598,6 +598,8 @@ replace_pseudos_in (rtx *loc, enum machine_mode mem_mode, rtx usage)
if (reg_equiv_constant[regno]) if (reg_equiv_constant[regno])
*loc = reg_equiv_constant[regno]; *loc = reg_equiv_constant[regno];
else if (reg_equiv_invariant[regno])
*loc = reg_equiv_invariant[regno];
else if (reg_equiv_mem[regno]) else if (reg_equiv_mem[regno])
*loc = reg_equiv_mem[regno]; *loc = reg_equiv_mem[regno];
else if (reg_equiv_address[regno]) else if (reg_equiv_address[regno])
...@@ -1316,6 +1318,8 @@ reload (rtx first, int global) ...@@ -1316,6 +1318,8 @@ reload (rtx first, int global)
VEC_free (rtx_p, heap, substitute_stack); VEC_free (rtx_p, heap, substitute_stack);
gcc_assert (bitmap_empty_p (&spilled_pseudos));
return failure; return failure;
} }
......
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