* flow.c (find_basic_blocks_1): Do not delete the first
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 May 2000 05:48:40 +0000 (05:48 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 May 2000 05:48:40 +0000 (05:48 +0000)
        bb_note we run across.
        (create_basic_block): Use reorder_insns to move an existing
        bb_note to the correct place.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33814 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/flow.c

index e91f0b2..ea8972b 100644 (file)
@@ -1,5 +1,12 @@
 2000-05-09  Richard Henderson  <rth@cygnus.com>
 
+       * flow.c (find_basic_blocks_1): Do not delete the first
+       bb_note we run across.
+       (create_basic_block): Use reorder_insns to move an existing
+       bb_note to the correct place.
+
+2000-05-09  Richard Henderson  <rth@cygnus.com>
+
        * calls.c (expand_call): Increment currently_expanding_call
        before calling optimize_tail_recursion.
 
index f528780..239c70f 100644 (file)
@@ -584,8 +584,8 @@ find_basic_blocks_1 (f)
              {
                if (bb_note == NULL_RTX)
                  bb_note = insn;
-
-               next = flow_delete_insn (insn);
+               else
+                 next = flow_delete_insn (insn);
              }
            break;
          }
@@ -780,13 +780,18 @@ create_basic_block (index, head, end, bb_note)
     {
       /* If we found an existing note, thread it back onto the chain.  */
 
+      rtx after;
+
       if (GET_CODE (head) == CODE_LABEL)
-       add_insn_after (bb_note, head);
+       after = head;
       else
        {
-         add_insn_before (bb_note, head);
+         after = PREV_INSN (head);
          head = bb_note;
        }
+
+      if (after != bb_note && NEXT_INSN (after) != bb_note)
+       reorder_insns (bb_note, bb_note, after);
     }
   else
     {