(sched_analyze): Record NOTE_INSN_SETJMP if no CALL_INSN as prev;
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 23 Feb 1996 13:47:27 +0000 (08:47 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 23 Feb 1996 13:47:27 +0000 (08:47 -0500)
preserve CONST_CALL_P bit.
(reemit_notes): Restore CONST_CALL_P.

From-SVN: r11342

gcc/sched.c

index f279512d6eb2ef1c9bfb0c8925323d02273a4363..d690a825a8f7673db74170830570ff0c6208feab 100644 (file)
@@ -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);