(reposition_prologue_and_epilogue_notes): Allow
authorJohn Hassey <hassey@gnu.org>
Fri, 12 Feb 1993 15:52:54 +0000 (15:52 +0000)
committerJohn Hassey <hassey@gnu.org>
Fri, 12 Feb 1993 15:52:54 +0000 (15:52 +0000)
for zero length prologue and epilogue list.

From-SVN: r3465

gcc/function.c

index 5e159a69cbab2c4c89af0e9cf95224aefe1ea0f3..b1ce844f13b81f5c17614d622aa57a5bcb624307 100644 (file)
@@ -4750,30 +4750,33 @@ reposition_prologue_and_epilogue_notes (f)
             reorg has run.  */
          for (len = 0; prologue[len]; len++)
            ;
-         for (insn = f; insn; insn = NEXT_INSN (insn))
-           if (GET_CODE (insn) == NOTE)
-             {
-               if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_PROLOGUE_END)
-                 note = insn;
-             }
-           else if ((len -= contains (insn, prologue)) == 0)
-             {
-               /* Find the prologue-end note if we haven't already, and
-                  move it to just after the last prologue insn.  */
-               if (note == 0)
-                 for (note = insn; note = NEXT_INSN (note);)
-                   if (GET_CODE (note) == NOTE
-                       && NOTE_LINE_NUMBER (note) == NOTE_INSN_PROLOGUE_END)
-                     break;
-               next = NEXT_INSN (note);
-               prev = PREV_INSN (note);
-               if (prev)
-                 NEXT_INSN (prev) = next;
-               if (next)
-                 PREV_INSN (next) = prev;
-               add_insn_after (note, insn);
-               break;
-             }
+         for (insn = f; len && insn; insn = NEXT_INSN (insn))
+           {
+             if (GET_CODE (insn) == NOTE)
+               {
+                 if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_PROLOGUE_END)
+                   note = insn;
+               }
+             else if ((len -= contains (insn, prologue)) == 0)
+               {
+                 /* Find the prologue-end note if we haven't already, and
+                    move it to just after the last prologue insn.  */
+                 if (note == 0)
+                   {
+                     for (note = insn; note = NEXT_INSN (note);)
+                       if (GET_CODE (note) == NOTE
+                           && NOTE_LINE_NUMBER (note) == NOTE_INSN_PROLOGUE_END)
+                         break;
+                   }
+                 next = NEXT_INSN (note);
+                 prev = PREV_INSN (note);
+                 if (prev)
+                   NEXT_INSN (prev) = next;
+                 if (next)
+                   PREV_INSN (next) = prev;
+                 add_insn_after (note, insn);
+               }
+           }
        }
 
       if (epilogue)
@@ -4785,30 +4788,33 @@ reposition_prologue_and_epilogue_notes (f)
             reorg has run.  */
          for (len = 0; epilogue[len]; len++)
            ;
-         for (insn = get_last_insn (); insn; insn = PREV_INSN (insn))
-           if (GET_CODE (insn) == NOTE)
-             {
-               if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EPILOGUE_BEG)
-                 note = insn;
-             }
-           else if ((len -= contains (insn, epilogue)) == 0)
-             {
-               /* Find the epilogue-begin note if we haven't already, and
-                  move it to just before the first epilogue insn.  */
-               if (note == 0)
-                 for (note = insn; note = PREV_INSN (note);)
-                   if (GET_CODE (note) == NOTE
-                       && NOTE_LINE_NUMBER (note) == NOTE_INSN_EPILOGUE_BEG)
-                     break;
-               next = NEXT_INSN (note);
-               prev = PREV_INSN (note);
-               if (prev)
-                 NEXT_INSN (prev) = next;
-               if (next)
-                 PREV_INSN (next) = prev;
-               add_insn_after (note, PREV_INSN (insn));
-               break;
-             }
+         for (insn = get_last_insn (); len && insn; insn = PREV_INSN (insn))
+           {
+             if (GET_CODE (insn) == NOTE)
+               {
+                 if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EPILOGUE_BEG)
+                   note = insn;
+               }
+             else if ((len -= contains (insn, epilogue)) == 0)
+               {
+                 /* Find the epilogue-begin note if we haven't already, and
+                    move it to just before the first epilogue insn.  */
+                 if (note == 0)
+                   {
+                     for (note = insn; note = PREV_INSN (note);)
+                       if (GET_CODE (note) == NOTE
+                           && NOTE_LINE_NUMBER (note) == NOTE_INSN_EPILOGUE_BEG)
+                         break;
+                   }
+                 next = NEXT_INSN (note);
+                 prev = PREV_INSN (note);
+                 if (prev)
+                   NEXT_INSN (prev) = next;
+                 if (next)
+                   PREV_INSN (next) = prev;
+                 add_insn_after (note, PREV_INSN (insn));
+               }
+           }
        }
     }
 #endif /* HAVE_prologue or HAVE_epilogue */