summaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-29 21:12:48 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-29 21:12:48 +0000
commit37a5cdb5458b14bd8b9e27d06a1d969711496882 (patch)
treec95bf16b6f5cb0dfca7aae4fa3bafd797d79393c /gcc/reload1.c
parentc9a034873fd89eba1a96de59b1ae879bbbe09f0c (diff)
downloadgcc-37a5cdb5458b14bd8b9e27d06a1d969711496882.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164733 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 1024cf1688c..202b757670a 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -588,7 +588,7 @@ replace_pseudos_in (rtx *loc, enum machine_mode mem_mode, rtx usage)
if (regno < FIRST_PSEUDO_REGISTER)
return;
- x = eliminate_regs (x, mem_mode, usage);
+ x = eliminate_regs_1 (x, mem_mode, usage, true, false);
if (x != *loc)
{
*loc = x;
@@ -598,6 +598,8 @@ replace_pseudos_in (rtx *loc, enum machine_mode mem_mode, rtx usage)
if (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])
*loc = reg_equiv_mem[regno];
else if (reg_equiv_address[regno])
@@ -1316,6 +1318,8 @@ reload (rtx first, int global)
VEC_free (rtx_p, heap, substitute_stack);
+ gcc_assert (bitmap_empty_p (&spilled_pseudos));
+
return failure;
}