The following patch fixes

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55048

LRA tried to take BB from non-NOTE_INSN_BASIC_BLOCK note and got NULL which resulted in SIGSEGV.

The patch was successfully bootstrapped with java on x86/x86-64.

  Committed as rev. 192770.

2012-10-24  Vladimir Makarov  <vmaka...@redhat.com>

    PR bootstrap/55048
    * lra-constraints.c (update_ebb_live_info): Skip
    non-NOTE_INSN_BASIC_BLOCK notes.


Index: lra-constraints.c
===================================================================
--- lra-constraints.c   (revision 192743)
+++ lra-constraints.c   (working copy)
@@ -4300,6 +4300,10 @@ update_ebb_live_info (rtx head, rtx tail
        curr_insn = prev_insn)
     {
       prev_insn = PREV_INSN (curr_insn);
+      /* We need to process empty blocks too.  They contain
+        NOTE_INSN_BASIC_BLOCK referring for the basic block.  */
+      if (NOTE_P (curr_insn) && NOTE_KIND (curr_insn) != NOTE_INSN_BASIC_BLOCK)
+       continue;
       curr_bb = BLOCK_FOR_INSN (curr_insn);
       if (curr_bb != prev_bb)
        {

Reply via email to