aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-09-16 21:00:21 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-09-16 21:00:21 +0000
commit7bd41ea6c8e6e08d4382230a82e6655c0d0ab477 (patch)
tree2ff14e08efafb9f46d170fb56157a53d8c0874c8 /gcc
parent96df4529dc098109a5616d81feedade2f7b3922f (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/haifa-sched.c23
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);
}