diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2015-11-25 17:58:35 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2015-11-25 17:58:35 +0000 |
commit | 6c051d60a93154eae6e916ac87f69b79552f202a (patch) | |
tree | c4b239ce2edafdf308b2a5765ce2570f123192aa | |
parent | df1bddedd4af1edd151461e544d34dfdb8e53b7e (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lra-constraints.c | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7b856bb..48f96a0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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. + 2015-11-25 Nathan Sidwell <nathan@acm.org> * config/nvptx/nvptx.md (load_arg_reg<mode>): Arg number 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 |