Import patch fixing a bug that caused ICE when compiling some packages (e.g. ICU) in Thumb-1 model. (From OE-Core rev: 68062674b853af750d0fdafb06090ed2f75fa0a4) Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
40 lines
1.4 KiB
Diff
40 lines
1.4 KiB
Diff
Upstream-Status: Accepted
|
|
|
|
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
|
|
---
|
|
|
|
2015-11-25 Vladimir Makarov <vmakarov@redhat.com>
|
|
|
|
PR rtl-optimization/67954
|
|
* lra-constraints.c (curr_insn_transform): Add check on scratch
|
|
pseudo when change class to NO_REGS. Add an assert.
|
|
|
|
|
|
|
|
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230894 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
---
|
|
|
|
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
|
|
index 4670e81..c62bf6a 100644
|
|
--- a/gcc/lra-constraints.c
|
|
+++ b/gcc/lra-constraints.c
|
|
@@ -3725,7 +3725,8 @@ curr_insn_transform (bool check_only_p)
|
|
assigment pass and the scratch pseudo will be
|
|
spilled. Spilled scratch pseudos are transformed
|
|
back to scratches at the LRA end. */
|
|
- && lra_former_scratch_operand_p (curr_insn, i))
|
|
+ && lra_former_scratch_operand_p (curr_insn, i)
|
|
+ && lra_former_scratch_p (REGNO (op)))
|
|
{
|
|
int regno = REGNO (op);
|
|
lra_change_class (regno, NO_REGS, " Change to", true);
|
|
@@ -3734,6 +3735,8 @@ curr_insn_transform (bool check_only_p)
|
|
spilled pseudo as there is only one such insn, the
|
|
current one. */
|
|
reg_renumber[regno] = -1;
|
|
+ lra_assert (bitmap_single_bit_set_p
|
|
+ (&lra_reg_info[REGNO (op)].insn_bitmap));
|
|
}
|
|
/* We can do an optional reload. If the pseudo got a hard
|
|
reg, we might improve the code through inheritance. If
|