diff options
author | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-31 10:06:49 +0000 |
---|---|---|
committer | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-31 10:06:49 +0000 |
commit | 26830937ead1b5f7443169de99fc875531fd3a40 (patch) | |
tree | 9847df5ccfac7bfd59def60653011006b282619a /gcc/recog.c | |
parent | 20b07f3ea46e80f04bd509a10f24459170a43849 (diff) | |
download | gcc-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.c | 30 |
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); - } } } |