Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame^] | 1 | Upstream-Status: Accepted |
| 2 | |
| 3 | Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
| 4 | --- |
| 5 | |
| 6 | 2015-11-25 Vladimir Makarov <vmakarov@redhat.com> |
| 7 | |
| 8 | PR rtl-optimization/67954 |
| 9 | * lra-constraints.c (curr_insn_transform): Add check on scratch |
| 10 | pseudo when change class to NO_REGS. Add an assert. |
| 11 | |
| 12 | |
| 13 | |
| 14 | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230894 138bc75d-0d04-0410-961f-82ee72b054a4 |
| 15 | --- |
| 16 | |
| 17 | diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c |
| 18 | index 4670e81..c62bf6a 100644 |
| 19 | --- a/gcc/lra-constraints.c |
| 20 | +++ b/gcc/lra-constraints.c |
| 21 | @@ -3725,7 +3725,8 @@ curr_insn_transform (bool check_only_p) |
| 22 | assigment pass and the scratch pseudo will be |
| 23 | spilled. Spilled scratch pseudos are transformed |
| 24 | back to scratches at the LRA end. */ |
| 25 | - && lra_former_scratch_operand_p (curr_insn, i)) |
| 26 | + && lra_former_scratch_operand_p (curr_insn, i) |
| 27 | + && lra_former_scratch_p (REGNO (op))) |
| 28 | { |
| 29 | int regno = REGNO (op); |
| 30 | lra_change_class (regno, NO_REGS, " Change to", true); |
| 31 | @@ -3734,6 +3735,8 @@ curr_insn_transform (bool check_only_p) |
| 32 | spilled pseudo as there is only one such insn, the |
| 33 | current one. */ |
| 34 | reg_renumber[regno] = -1; |
| 35 | + lra_assert (bitmap_single_bit_set_p |
| 36 | + (&lra_reg_info[REGNO (op)].insn_bitmap)); |
| 37 | } |
| 38 | /* We can do an optional reload. If the pseudo got a hard |
| 39 | reg, we might improve the code through inheritance. If |