aboutsummaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2000-03-19 05:26:48 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2000-03-19 05:26:48 +0000
commit116eebd67408bc31ca138311c8ac7f4d2389c22f (patch)
tree7e5085f497fa4f8351b62a15342abb5192c649b0 /gcc/emit-rtl.c
parentcd8ed629642bebaa19a2fe544f0c3efcafe835f2 (diff)
downloadgcc-116eebd67408bc31ca138311c8ac7f4d2389c22f.zip
gcc-116eebd67408bc31ca138311c8ac7f4d2389c22f.tar.gz
gcc-116eebd67408bc31ca138311c8ac7f4d2389c22f.tar.bz2
emit-rtl.c (remove_unncessary_notes): Check that all NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes have an...
* emit-rtl.c (remove_unncessary_notes): Check that all NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes have an associated NOTE_BLOCK. * function.h (identify_blocks): Update comments. (reorder_blocks): Declare. * function.c (identify_blocks): Don't take paramters. (reorder_blocks): Don't take parameters. * loop.h (find_loop_tree_blocks): Remove. (unroll_block_trees): Likewise. * loop.c (loop_optimize): Don't call find_loop_tree_blocks. Use reorder_blocks instead of unroll_block_trees.h * sibcall.c (optimize_sibling_and_tail_recursive_calls): Likewise. * stmt.c (find_loop_tree_blocks): Remove. (unroll_block_trees): Likewise. * toplev.c (rest_of_compilation): Don't call find_loop_tree_blocks in whole-function mode. * tree.h (reorder_blocks): Remove declaration. From-SVN: r32632
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 3d6f73b..764a5ad 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -2667,9 +2667,8 @@ remove_unncessary_notes ()
rtx insn;
rtx next;
- /* Remove NOTE_INSN_DELETED notes. We must not remove the first
- instruction in the function because the compiler depends on the
- first instruction being a note. */
+ /* We must not remove the first instruction in the function because
+ the compiler depends on the first instruction being a note. */
for (insn = NEXT_INSN (get_insns ()); insn; insn = next)
{
/* Remember what's next. */
@@ -2679,6 +2678,14 @@ remove_unncessary_notes ()
if (GET_CODE (insn) != NOTE)
continue;
+ /* By now, all notes indicating lexical blocks should have
+ NOTE_BLOCK filled in. */
+ if ((NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_BEG
+ || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END)
+ && NOTE_BLOCK (insn) == NULL_TREE)
+ abort ();
+
+ /* Remove NOTE_INSN_DELETED notes. */
if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED)
remove_insn (insn);
else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END)