diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-10-26 12:01:21 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-10-26 12:01:21 +0000 |
commit | 1208daeb416accd8188704e4e662a3c618aa8ef5 (patch) | |
tree | 4e66eb419efcfa6d954c780a8a1d04c475a0781a /gcc/final.c | |
parent | 801acb81b93af935a279083c5192fa66c9d3c05d (diff) | |
download | gcc-1208daeb416accd8188704e4e662a3c618aa8ef5.tar.gz |
(final_scan_insn): When recur for instruction in delay slot, add loop
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
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 8ab4bdc855a..19b968301c5 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 |