aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2015-11-25 17:58:35 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2015-11-25 17:58:35 +0000
commit6c051d60a93154eae6e916ac87f69b79552f202a (patch)
treec4b239ce2edafdf308b2a5765ce2570f123192aa /gcc/lra-constraints.c
parentdf1bddedd4af1edd151461e544d34dfdb8e53b7e (diff)
downloadgcc-6c051d60a93154eae6e916ac87f69b79552f202a.zip
gcc-6c051d60a93154eae6e916ac87f69b79552f202a.tar.gz
gcc-6c051d60a93154eae6e916ac87f69b79552f202a.tar.bz2
re PR rtl-optimization/67954 (internal compiler error: in patch_jump_insn, at cfgrtl.c:1303)
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. From-SVN: r230894
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c5
1 files changed, 4 insertions, 1 deletions
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