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.
{
if (bb_note == NULL_RTX)
bb_note = insn;
-
- next = flow_delete_insn (insn);
+ else
+ next = flow_delete_insn (insn);
}
break;
}
{
/* 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
{