aboutsummaryrefslogtreecommitdiff
path: root/gcc/haifa-sched.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-09-15 23:05:05 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-09-15 23:05:05 +0000
commit1a4450c78ff2b55ef5af7749ac56ef13b5c8dd0c (patch)
tree3d508285418ae3e6e9fa770aac8efa585f50fce9 /gcc/haifa-sched.c
parent371534a917ce5751c5d05e2b7428a86374a73376 (diff)
downloadgcc-1a4450c78ff2b55ef5af7749ac56ef13b5c8dd0c.zip
gcc-1a4450c78ff2b55ef5af7749ac56ef13b5c8dd0c.tar.gz
gcc-1a4450c78ff2b55ef5af7749ac56ef13b5c8dd0c.tar.bz2
rtl.h (NOTE_BLOCK_NUMBER): Replace with ...
* rtl.h (NOTE_BLOCK_NUMBER): Replace with ... (NOTE_BLOCK): New macro. (NOTE_BLOCK_LIVE_RANGE_BLOCK): Remove. * function.h (identify_blocks): CHange prototype. * function.c (identify_blocks): Simplify. (reorder_blocks): Likewise. * ggc-common.c (ggc_mark_rtx): Mark the BLOCK associated with a NOTE_INSN_BLOCK_{BEG,END}. * haifa-sched.c (sched_analyze): Don't put NOTE_BLOCK_NUMBER on the list of saved notes if the note isn't a NOTE_INSN_BLOCK_{BEG,END}. (move_insn1): Use NOTE_EH_HANDLER in comment, rather than NOTE_BLOCK_NUMBER. (reemit_notes): Adjust recreation of notes to reflect new saved note structure. * print-rtl.c (print_rtx): Print the address of the BLOCK when printing a block note. * stmt.c (block_vector): Remove. (find_loop_tree_blocks): Simplify. (unroll_block_trees): Likewise. From-SVN: r29441
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r--gcc/haifa-sched.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 52ce9be..9d070f0 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -3939,9 +3939,12 @@ sched_analyze (head, tail)
|| (NOTE_LINE_NUMBER (insn) == NOTE_INSN_SETJMP
&& GET_CODE (PREV_INSN (insn)) != CALL_INSN)))
{
- loop_notes = alloc_EXPR_LIST (REG_DEAD,
- GEN_INT (NOTE_BLOCK_NUMBER (insn)),
- loop_notes);
+ if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_BEG
+ || NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_END)
+ loop_notes = alloc_EXPR_LIST (REG_DEAD,
+ GEN_INT (NOTE_EH_HANDLER (insn)),
+ loop_notes);
+
loop_notes = alloc_EXPR_LIST (REG_DEAD,
GEN_INT (NOTE_LINE_NUMBER (insn)),
loop_notes);
@@ -6494,7 +6497,7 @@ move_insn1 (insn, last)
/* Search INSN for fake REG_DEAD note pairs for NOTE_INSN_SETJMP,
NOTE_INSN_{LOOP,EHREGION}_{BEG,END}; and convert them back into
NOTEs. The REG_DEAD note following first one is contains the saved
- value for NOTE_BLOCK_NUMBER which is useful for
+ value for NOTE_EH_HANDLER which is useful for
NOTE_INSN_EH_REGION_{BEG,END} NOTEs. LAST is the last instruction
output by the instruction scheduler. Return the new value of LAST. */
@@ -6516,8 +6519,6 @@ reemit_notes (insn, last)
{
retval = emit_note_after (NOTE_INSN_SETJMP, insn);
CONST_CALL_P (retval) = CONST_CALL_P (note);
- remove_note (insn, note);
- note = XEXP (note, 1);
}
else if (note_type == NOTE_INSN_RANGE_START
|| note_type == NOTE_INSN_RANGE_END)
@@ -6530,9 +6531,13 @@ reemit_notes (insn, last)
else
{
last = emit_note_before (note_type, last);
- remove_note (insn, note);
- note = XEXP (note, 1);
- NOTE_BLOCK_NUMBER (last) = INTVAL (XEXP (note, 0));
+ if (note_type == NOTE_INSN_EH_REGION_BEG
+ || note_type == NOTE_INSN_EH_REGION_END)
+ {
+ remove_note (insn, note);
+ note = XEXP (note, 1);
+ NOTE_EH_HANDLER (last) = INTVAL (XEXP (note, 0));
+ }
}
remove_note (insn, note);
}