diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-09-15 23:05:05 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-09-15 23:05:05 +0000 |
commit | 1a4450c78ff2b55ef5af7749ac56ef13b5c8dd0c (patch) | |
tree | 3d508285418ae3e6e9fa770aac8efa585f50fce9 /gcc/haifa-sched.c | |
parent | 371534a917ce5751c5d05e2b7428a86374a73376 (diff) | |
download | gcc-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.c | 23 |
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); } |