Fix crashes in split_all_insns

From-SVN: r37155
This commit is contained in:
Bernd Schmidt 2000-10-31 10:06:49 +00:00 committed by Bernd Schmidt
parent 332316cdbc
commit 1d766db010
2 changed files with 21 additions and 14 deletions

View File

@ -17,6 +17,11 @@
Renumber case labels to match the _mm_prefetch constants defined in
xmmintrin.h.
* recog.c (split_all_insns): Don't try to call cleanup_subreg_operands
if the splitter didn't emit new insns.
Make sure we call cleanup_subreg_operands even when splitting the last
insn in a basic block.
2000-10-30 Neil Booth <neilb@earthling.net>
* cppfiles.c (stack_include_file): Check for stacked contexts

View File

@ -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);
}
}
}