diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-09-16 21:00:21 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-09-16 21:00:21 +0000 |
commit | 7bd41ea6c8e6e08d4382230a82e6655c0d0ab477 (patch) | |
tree | 2ff14e08efafb9f46d170fb56157a53d8c0874c8 /gcc | |
parent | 96df4529dc098109a5616d81feedade2f7b3922f (diff) | |
download | gcc-7bd41ea6c8e6e08d4382230a82e6655c0d0ab477.zip gcc-7bd41ea6c8e6e08d4382230a82e6655c0d0ab477.tar.gz gcc-7bd41ea6c8e6e08d4382230a82e6655c0d0ab477.tar.bz2 |
haifa-sched.c (sched_analyze): Keep the list of notes organized in pairs.
* haifa-sched.c (sched_analyze): Keep the list of notes organized
in pairs.
(reemit_notes): Likewise.
From-SVN: r29462
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 23 |
2 files changed, 20 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e19202..716ea42 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Sep 16 14:03:32 1999 Mark Mitchell <mark@codesourcery.com> + + * haifa-sched.c (sched_analyze): Keep the list of notes organized + in pairs. + (reemit_notes): Likewise. + Thu Sep 16 11:50:52 1999 Alex Samuel <samuel@codesourcery.com> * ggc.h (ggc_root): Move to ggc-common.c. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 9d070f0..e0387c6 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -3939,13 +3939,18 @@ sched_analyze (head, tail) || (NOTE_LINE_NUMBER (insn) == NOTE_INSN_SETJMP && GET_CODE (PREV_INSN (insn)) != CALL_INSN))) { + rtx region; + 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); + region = GEN_INT (NOTE_EH_HANDLER (insn)); + else + region = GEN_INT (0); loop_notes = alloc_EXPR_LIST (REG_DEAD, + region, + loop_notes); + loop_notes = alloc_EXPR_LIST (REG_DEAD, GEN_INT (NOTE_LINE_NUMBER (insn)), loop_notes); CONST_CALL_P (loop_notes) = CONST_CALL_P (insn); @@ -6497,7 +6502,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_EH_HANDLER which is useful for + value for NOTE_BLOCK_NUMBER 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. */ @@ -6519,6 +6524,8 @@ 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) @@ -6531,13 +6538,11 @@ reemit_notes (insn, last) else { last = emit_note_before (note_type, last); + remove_note (insn, note); + note = XEXP (note, 1); 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)); - } + NOTE_EH_HANDLER (last) = INTVAL (XEXP (note, 0)); } remove_note (insn, note); } |