re PR rtl-optimization/67954 (internal compiler error: in patch_jump_insn, at cfgrtl...
authorVladimir Makarov <vmakarov@redhat.com>
Wed, 25 Nov 2015 17:58:35 +0000 (17:58 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Wed, 25 Nov 2015 17:58:35 +0000 (17:58 +0000)
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

gcc/ChangeLog
gcc/lra-constraints.c

index 7b856bb06337bebf61ef4d810e67f0cbd04ecd86..48f96a0707de930f6380bd49cefbcc139e11a1ee 100644 (file)
@@ -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
index 4670e811b3a9bb0288bf40f91157e3152dbaa9d0..c62bf6a2ceadd9404188cf53c9826a64005ed38f 100644 (file)
@@ -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