diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2006-03-23 11:33:38 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2006-03-23 10:33:38 +0000 |
commit | 054a09fb260f5590f0349237662c4d6bcdaf0dd7 (patch) | |
tree | b4875002f8168859c607632b90c826dc7f4b747a /gcc/cfgloopmanip.c | |
parent | c16ba1d5fea86df6f8d9e3d5d16c023dc65ce516 (diff) | |
download | gcc-054a09fb260f5590f0349237662c4d6bcdaf0dd7.zip gcc-054a09fb260f5590f0349237662c4d6bcdaf0dd7.tar.gz gcc-054a09fb260f5590f0349237662c4d6bcdaf0dd7.tar.bz2 |
cfgloopmanip.c (create_loop_notes): Removed.
* cfgloopmanip.c (create_loop_notes): Removed.
* final.c (final_scan_insn): Do not handle loop notes.
* jump.c (squeeze_notes): Ditto.
* cfglayout.c (skip_insns_after_block,
duplicate_insn_chain): Ditto.
* cfgcleanup.c (rest_of_handle_jump2): Do not call
create_loop_notes.
* cfgloop.h (create_loop_notes): Declaration removed.
From-SVN: r112316
Diffstat (limited to 'gcc/cfgloopmanip.c')
-rw-r--r-- | gcc/cfgloopmanip.c | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index bb7aca0..79c5142 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -1275,100 +1275,6 @@ loop_split_edge_with (edge e, rtx insns) return new_bb; } -/* Uses the natural loop discovery to recreate loop notes. */ -void -create_loop_notes (void) -{ - rtx insn, head, end; - struct loops loops; - struct loop *loop; - basic_block *first, *last, bb, pbb; - struct loop **stack, **top; - -#ifdef ENABLE_CHECKING - /* Verify that there really are no loop notes. */ - for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) - gcc_assert (!NOTE_P (insn) || - NOTE_LINE_NUMBER (insn) != NOTE_INSN_LOOP_BEG); -#endif - - flow_loops_find (&loops); - free_dominance_info (CDI_DOMINATORS); - if (loops.num > 1) - { - last = XCNEWVEC (basic_block, loops.num); - - FOR_EACH_BB (bb) - { - for (loop = bb->loop_father; loop->outer; loop = loop->outer) - last[loop->num] = bb; - } - - first = XCNEWVEC (basic_block, loops.num); - stack = XCNEWVEC (struct loop *, loops.num); - top = stack; - - FOR_EACH_BB (bb) - { - for (loop = bb->loop_father; loop->outer; loop = loop->outer) - { - if (!first[loop->num]) - { - *top++ = loop; - first[loop->num] = bb; - } - - if (bb == last[loop->num]) - { - /* Prevent loops from overlapping. */ - while (*--top != loop) - last[(*top)->num] = EXIT_BLOCK_PTR; - - /* If loop starts with jump into it, place the note in - front of the jump. */ - insn = PREV_INSN (BB_HEAD (first[loop->num])); - if (insn - && BARRIER_P (insn)) - insn = PREV_INSN (insn); - - if (insn - && JUMP_P (insn) - && any_uncondjump_p (insn) - && onlyjump_p (insn)) - { - pbb = BLOCK_FOR_INSN (insn); - gcc_assert (pbb && single_succ_p (pbb)); - - if (!flow_bb_inside_loop_p (loop, single_succ (pbb))) - insn = BB_HEAD (first[loop->num]); - } - else - insn = BB_HEAD (first[loop->num]); - - head = BB_HEAD (first[loop->num]); - emit_note_before (NOTE_INSN_LOOP_BEG, insn); - BB_HEAD (first[loop->num]) = head; - - /* Position the note correctly wrto barrier. */ - insn = BB_END (last[loop->num]); - if (NEXT_INSN (insn) - && BARRIER_P (NEXT_INSN (insn))) - insn = NEXT_INSN (insn); - - end = BB_END (last[loop->num]); - emit_note_after (NOTE_INSN_LOOP_END, insn); - BB_END (last[loop->num]) = end; - } - } - } - - free (first); - free (last); - free (stack); - } - flow_loops_free (&loops); -} - /* This function is called from loop_version. It splits the entry edge of the loop we want to version, adds the versioning condition, and adjust the edges to the two versions of the loop appropriately. |