summaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-31 10:06:49 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-31 10:06:49 +0000
commit26830937ead1b5f7443169de99fc875531fd3a40 (patch)
tree9847df5ccfac7bfd59def60653011006b282619a /gcc/recog.c
parent20b07f3ea46e80f04bd509a10f24459170a43849 (diff)
downloadgcc-26830937ead1b5f7443169de99fc875531fd3a40.tar.gz
Fix crashes in split_all_insns
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37155 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index 5c45cdb683e..b7cc2b7377d 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -2747,29 +2747,31 @@ split_all_insns (upd_life)
changed = 1;
/* try_split returns the NOTE that INSN became. */
- first = NEXT_INSN (first);
PUT_CODE (insn, NOTE);
NOTE_SOURCE_FILE (insn) = 0;
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
+ /* ??? Coddle to md files that generate subregs in post-
+ reload splitters instead of computing the proper
+ hard register. */
+ if (reload_completed && first != last)
+ {
+ first = NEXT_INSN (first);
+ while (1)
+ {
+ if (INSN_P (first))
+ cleanup_subreg_operands (first);
+ if (first == last)
+ break;
+ first = NEXT_INSN (first);
+ }
+ }
+
if (insn == bb->end)
{
bb->end = last;
break;
}
-
- /* ??? Coddle to md files that generate subregs in post-
- reload splitters instead of computing the proper
- hard register. */
- if (reload_completed)
- while (1)
- {
- if (INSN_P (first))
- cleanup_subreg_operands (first);
- if (first == last)
- break;
- first = NEXT_INSN (first);
- }
}
}