aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-03-23 11:33:38 +0100
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-03-23 10:33:38 +0000
commit054a09fb260f5590f0349237662c4d6bcdaf0dd7 (patch)
treeb4875002f8168859c607632b90c826dc7f4b747a
parentc16ba1d5fea86df6f8d9e3d5d16c023dc65ce516 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/cfgcleanup.c2
-rw-r--r--gcc/cfglayout.c10
-rw-r--r--gcc/cfgloop.h1
-rw-r--r--gcc/cfgloopmanip.c94
-rw-r--r--gcc/final.c2
-rw-r--r--gcc/jump.c14
7 files changed, 19 insertions, 115 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2f1f548..e573c23 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2006-03-23 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * 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.
+
2006-03-23 Richard Sandiford <richard@codesourcery.com>
* varasm.c (output_constant_pool): Restore fnname and fndecl
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index cd9d708..954a956 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -2312,8 +2312,6 @@ rest_of_handle_jump2 (void)
cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0)
| (flag_thread_jumps ? CLEANUP_THREADING : 0));
- create_loop_notes ();
-
purge_line_number_notes ();
if (optimize)
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index bcdeb96..f427a2b 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -99,7 +99,6 @@ skip_insns_after_block (basic_block bb)
case NOTE:
switch (NOTE_LINE_NUMBER (insn))
{
- case NOTE_INSN_LOOP_END:
case NOTE_INSN_BLOCK_END:
last_insn = insn;
continue;
@@ -135,12 +134,12 @@ skip_insns_after_block (basic_block bb)
/* It is possible to hit contradictory sequence. For instance:
jump_insn
- NOTE_INSN_LOOP_BEG
+ NOTE_INSN_BLOCK_BEG
barrier
Where barrier belongs to jump_insn, but the note does not. This can be
created by removing the basic block originally following
- NOTE_INSN_LOOP_BEG. In such case reorder the notes. */
+ NOTE_INSN_BLOCK_BEG. In such case reorder the notes. */
for (insn = last_insn; insn != BB_END (bb); insn = prev)
{
@@ -148,7 +147,6 @@ skip_insns_after_block (basic_block bb)
if (NOTE_P (insn))
switch (NOTE_LINE_NUMBER (insn))
{
- case NOTE_INSN_LOOP_END:
case NOTE_INSN_BLOCK_END:
case NOTE_INSN_DELETED:
case NOTE_INSN_DELETED_LABEL:
@@ -986,10 +984,6 @@ duplicate_insn_chain (rtx from, rtx to)
in first BB, we may want to copy the block. */
case NOTE_INSN_PROLOGUE_END:
- case NOTE_INSN_LOOP_BEG:
- case NOTE_INSN_LOOP_END:
- /* Strip down the loop notes - we don't really want to keep
- them consistent in loop copies. */
case NOTE_INSN_DELETED:
case NOTE_INSN_DELETED_LABEL:
/* No problem to strip these. */
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index c2f7bbb..3309e0f 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -198,7 +198,6 @@ int flow_loop_nodes_find (basic_block, struct loop *);
void fix_loop_structure (struct loops *, bitmap changed_bbs);
void mark_irreducible_loops (struct loops *);
void mark_single_exit_loops (struct loops *);
-extern void create_loop_notes (void);
/* Loop data structure manipulation/querying. */
extern void flow_loop_tree_node_add (struct loop *, struct loop *);
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.
diff --git a/gcc/final.c b/gcc/final.c
index 4a5fd18..0cb985f 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -1697,8 +1697,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
switch (NOTE_LINE_NUMBER (insn))
{
case NOTE_INSN_DELETED:
- case NOTE_INSN_LOOP_BEG:
- case NOTE_INSN_LOOP_END:
case NOTE_INSN_FUNCTION_END:
case NOTE_INSN_REPEATED_LINE_NUMBER:
case NOTE_INSN_EXPECTED_VALUE:
diff --git a/gcc/jump.c b/gcc/jump.c
index 79a21b4..b60c284 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -260,11 +260,11 @@ mark_all_labels (rtx f)
}
}
-/* Move all block-beg, block-end, loop-beg, loop-cont, loop-vtop, loop-end,
- notes between START and END out before START. START and END may be such
- notes. Returns the values of the new starting and ending insns, which
- may be different if the original ones were such notes.
- Return true if there were only such notes and no real instructions. */
+/* Move all block-beg, block-end and loop-beg notes between START and END out
+ before START. START and END may be such notes. Returns the values of the
+ new starting and ending insns, which may be different if the original ones
+ were such notes. Return true if there were only such notes and no real
+ instructions. */
bool
squeeze_notes (rtx* startp, rtx* endp)
@@ -282,9 +282,7 @@ squeeze_notes (rtx* startp, rtx* endp)
next = NEXT_INSN (insn);
if (NOTE_P (insn)
&& (NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END
- || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_BEG
- || NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG
- || NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END))
+ || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_BEG))
{
/* BLOCK_BEG or BLOCK_END notes only exist in the `final' pass. */
gcc_assert (NOTE_LINE_NUMBER (insn) != NOTE_INSN_BLOCK_BEG