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 | |
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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/flow.c | 13 |
2 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e91f0b2..ea8972b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. @@ -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 { |