OSDN Git Service

(sched_analyze): Record NOTE_INSN_SETJMP if no CALL_INSN as prev;
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Feb 1996 13:47:27 +0000 (13:47 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Feb 1996 13:47:27 +0000 (13:47 +0000)
preserve CONST_CALL_P bit.
(reemit_notes): Restore CONST_CALL_P.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@11342 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/sched.c

index f279512..d690a82 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);