diff options
author | Richard Henderson <rth@cygnus.com> | 2000-05-09 22:48:40 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-05-09 22:48:40 -0700 |
commit | 47095bfc99080f1a17942390e8815a07efcbf12c (patch) | |
tree | bef8339a2300fe6163aecfbb335441279c09169a /gcc/flow.c | |
parent | 840e7b5148eb5894ee29e8d6267b56903412eeac (diff) | |
download | gcc-47095bfc99080f1a17942390e8815a07efcbf12c.zip gcc-47095bfc99080f1a17942390e8815a07efcbf12c.tar.gz gcc-47095bfc99080f1a17942390e8815a07efcbf12c.tar.bz2 |
flow.c (find_basic_blocks_1): Do not delete the first bb_note we run across.
* 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.
From-SVN: r33814
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -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 { |