OSDN Git Service

(final_scan_insn): When recur for instruction in delay slot, add loop
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Oct 1995 12:01:21 +0000 (12:01 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Oct 1995 12:01:21 +0000 (12:01 +0000)
around recursive call in case the instruction gets split.

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

gcc/final.c

index 8ab4bdc..19b9683 100644 (file)
@@ -1686,7 +1686,15 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
              }
 
            for (i = 1; i < XVECLEN (body, 0); i++)
-             final_scan_insn (XVECEXP (body, 0, i), file, 0, prescan, 1);
+             {
+               rtx insn = XVECEXP (body, 0, i);
+               rtx next = NEXT_INSN (insn);
+               /* We loop in case any instruction in a delay slot gets
+                  split.  */
+               do
+                 insn = final_scan_insn (insn, file, 0, prescan, 1);
+               while (insn != next);
+             }
 #ifdef DBR_OUTPUT_SEQEND
            DBR_OUTPUT_SEQEND (file);
 #endif