diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-10-26 08:01:21 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-10-26 08:01:21 -0400 |
commit | c7eee2df1d729c52112e5388f6d4146780ae77d5 (patch) | |
tree | 4e66eb419efcfa6d954c780a8a1d04c475a0781a /gcc/final.c | |
parent | fe464cafd9157578e3f8bb6dee341d470d0e96e7 (diff) | |
download | gcc-c7eee2df1d729c52112e5388f6d4146780ae77d5.zip gcc-c7eee2df1d729c52112e5388f6d4146780ae77d5.tar.gz gcc-c7eee2df1d729c52112e5388f6d4146780ae77d5.tar.bz2 |
(final_scan_insn): When recur for instruction in delay slot...
(final_scan_insn): When recur for instruction in delay slot, add loop
around recursive call in case the instruction gets split.
From-SVN: r10511
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/final.c b/gcc/final.c index 8ab4bdc..19b9683 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -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 |