diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-02-23 08:47:27 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-02-23 08:47:27 -0500 |
commit | e6e68157d3ff41c37a736656e4f093a41d7c3e28 (patch) | |
tree | 867d9f30243a652b7139b3af01cc4b2b4599146c /gcc/sched.c | |
parent | b453cb0b75e558aad1baa4f299b09b5af0616573 (diff) | |
download | gcc-e6e68157d3ff41c37a736656e4f093a41d7c3e28.zip gcc-e6e68157d3ff41c37a736656e4f093a41d7c3e28.tar.gz gcc-e6e68157d3ff41c37a736656e4f093a41d7c3e28.tar.bz2 |
(sched_analyze): Record NOTE_INSN_SETJMP if no CALL_INSN as prev;
preserve CONST_CALL_P bit.
(reemit_notes): Restore CONST_CALL_P.
From-SVN: r11342
Diffstat (limited to 'gcc/sched.c')
-rw-r--r-- | gcc/sched.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/sched.c b/gcc/sched.c index f279512..d690a82 100644 --- a/gcc/sched.c +++ b/gcc/sched.c @@ -2278,9 +2278,14 @@ sched_analyze (head, tail) } else if (GET_CODE (insn) == NOTE && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG - || NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END)) - loop_notes = gen_rtx (EXPR_LIST, REG_DEAD, - GEN_INT (NOTE_LINE_NUMBER (insn)), loop_notes); + || NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END + || (NOTE_LINE_NUMBER (insn) == NOTE_INSN_SETJMP + && GET_CODE (PREV_INSN (insn)) != CALL_INSN))) + { + loop_notes = gen_rtx (EXPR_LIST, REG_DEAD, + GEN_INT (NOTE_LINE_NUMBER (insn)), loop_notes); + CONST_CALL_P (loop_notes) = CONST_CALL_P (insn); + } if (insn == tail) return n_insns; @@ -3147,7 +3152,8 @@ reemit_notes (insn, last) && GET_CODE (XEXP (note, 0)) == CONST_INT) { if (INTVAL (XEXP (note, 0)) == NOTE_INSN_SETJMP) - emit_note_after (INTVAL (XEXP (note, 0)), insn); + CONST_CALL_P (emit_note_after (INTVAL (XEXP (note, 0)), insn)) + = CONST_CALL_P (note); else last = emit_note_before (INTVAL (XEXP (note, 0)), last); remove_note (insn, note); |