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



--- Comment #3 from vries at gcc dot gnu.org 2013-01-29 00:28:38 UTC ---

Using NOTE_BASIC_BLOCK instead of BLOCK_FOR_INSN on bb_note allows us to get

the bb.



This tentative patch:

...

Index: cfgrtl.c

===================================================================

--- cfgrtl.c (revision 195240)

+++ cfgrtl.c (working copy)

@@ -144,9 +144,11 @@ delete_insn (rtx insn)

       NOTE_DELETED_LABEL_NAME (insn) = name;



       if (bb_note != NULL_RTX && NOTE_INSN_BASIC_BLOCK_P (bb_note)

-          && BLOCK_FOR_INSN (bb_note) == bb)

+          && (bb == NULL

+          || NOTE_BASIC_BLOCK (bb_note) == bb))

         {

           reorder_insns_nobb (insn, insn, bb_note);

+          bb = NOTE_BASIC_BLOCK (bb_note);

           BB_HEAD (bb) = bb_note;

           if (BB_END (bb) == bb_note)

         BB_END (bb) = insn;

...



gives the following result:

...

(note 23 221 22 [bb 3] NOTE_INSN_BASIC_BLOCK)

(note 22 23 67 ("lbl1") NOTE_INSN_DELETED_LABEL 3)

...

Reply via email to