aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-08-31 03:55:31 -0600
committerJeff Law <law@gcc.gnu.org>1998-08-31 03:55:31 -0600
commit6dfdecdb1d8f0ece741e00d187d9cb73d0e9b6ec (patch)
tree233d864c192af8d8a351375918489037b7826dea
parentda2ec29a6cd37cace754777558eb3deb0d9f06e6 (diff)
downloadgcc-6dfdecdb1d8f0ece741e00d187d9cb73d0e9b6ec.zip
gcc-6dfdecdb1d8f0ece741e00d187d9cb73d0e9b6ec.tar.gz
gcc-6dfdecdb1d8f0ece741e00d187d9cb73d0e9b6ec.tar.bz2
print-rtl.c (print_rtx): NOTE_INSN_LIVE has an rtx not a bitmap.
� * print-rtl.c (print_rtx): NOTE_INSN_LIVE has an rtx not a bitmap. * haifa-sched.c (sched_analyze): Handle NOTE_INSN_RANGE_START and NOTE_INSN_RANGE_END specially. (reemit_notes): Likewise. From-SVN: r22127
-rw-r--r--gcc/haifa-sched.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 7192837..10e25a1 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -3930,13 +3930,23 @@ sched_analyze (head, tail)
}
/* See comments on reemit_notes as to why we do this. */
+ /* ??? Actually, the reemit_notes just say what is done, not why. */
+
+ else if (GET_CODE (insn) == NOTE
+ && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_RANGE_START
+ || NOTE_LINE_NUMBER (insn) == NOTE_INSN_RANGE_END))
+ {
+ loop_notes = alloc_EXPR_LIST (REG_DEAD, NOTE_RANGE_INFO (insn),
+ loop_notes);
+ loop_notes = alloc_EXPR_LIST (REG_DEAD,
+ GEN_INT (NOTE_LINE_NUMBER (insn)),
+ loop_notes);
+ }
else if (GET_CODE (insn) == NOTE
&& (NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG
|| NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END
|| NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_BEG
|| NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_END
- || NOTE_LINE_NUMBER (insn) == NOTE_INSN_RANGE_START
- || NOTE_LINE_NUMBER (insn) == NOTE_INSN_RANGE_END
|| (NOTE_LINE_NUMBER (insn) == NOTE_INSN_SETJMP
&& GET_CODE (PREV_INSN (insn)) != CALL_INSN)))
{
@@ -6461,13 +6471,22 @@ reemit_notes (insn, last)
if (REG_NOTE_KIND (note) == REG_DEAD
&& GET_CODE (XEXP (note, 0)) == CONST_INT)
{
- if (INTVAL (XEXP (note, 0)) == NOTE_INSN_SETJMP)
+ int note_type = INTVAL (XEXP (note, 0));
+ if (note_type == NOTE_INSN_SETJMP)
{
- retval = emit_note_after (INTVAL (XEXP (note, 0)), insn);
+ 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)
+ {
+ last = emit_note_before (note_type, last);
+ remove_note (insn, note);
+ note = XEXP (note, 1);
+ NOTE_RANGE_INFO (last) = XEXP (note, 0);
+ }
else
{
last = emit_note_before (INTVAL (XEXP (note, 0)), last);