mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 21:31:54 +08:00
re PR rtl-optimization/40101 (200.sixtrack ICEs in get_seqno_by_preds, at sel-sched-ir.c:3752)
PR rtl-optimization/40101 * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative seqno. Adjust comment. * sel-sched.c (find_seqno_for_bookkeeping): Assert that when inserting bookkeeping before a jump, the jump is not scheduled. When no positive seqno found, provide a value. Add comment. From-SVN: r147977
This commit is contained in:
parent
71dcd6099a
commit
da7ba240d6
@ -1,3 +1,12 @@
|
||||
2009-05-29 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
PR rtl-optimization/40101
|
||||
* sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
|
||||
seqno. Adjust comment.
|
||||
* sel-sched.c (find_seqno_for_bookkeeping): Assert that when
|
||||
inserting bookkeeping before a jump, the jump is not scheduled.
|
||||
When no positive seqno found, provide a value. Add comment.
|
||||
|
||||
2009-05-29 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
|
||||
|
@ -3730,7 +3730,8 @@ get_seqno_of_a_pred (insn_t insn)
|
||||
return seqno;
|
||||
}
|
||||
|
||||
/* Find the proper seqno for inserting at INSN. */
|
||||
/* Find the proper seqno for inserting at INSN. Returns -1 if no predecessors
|
||||
with positive seqno exist. */
|
||||
int
|
||||
get_seqno_by_preds (rtx insn)
|
||||
{
|
||||
@ -3749,7 +3750,6 @@ get_seqno_by_preds (rtx insn)
|
||||
for (i = 0, seqno = -1; i < n; i++)
|
||||
seqno = MAX (seqno, INSN_SEQNO (preds[i]));
|
||||
|
||||
gcc_assert (seqno > 0);
|
||||
return seqno;
|
||||
}
|
||||
|
||||
|
@ -4524,11 +4524,27 @@ find_seqno_for_bookkeeping (insn_t place_to_insert, insn_t join_point)
|
||||
if (INSN_P (next)
|
||||
&& JUMP_P (next)
|
||||
&& BLOCK_FOR_INSN (next) == BLOCK_FOR_INSN (place_to_insert))
|
||||
seqno = INSN_SEQNO (next);
|
||||
{
|
||||
gcc_assert (INSN_SCHED_TIMES (next) == 0);
|
||||
seqno = INSN_SEQNO (next);
|
||||
}
|
||||
else if (INSN_SEQNO (join_point) > 0)
|
||||
seqno = INSN_SEQNO (join_point);
|
||||
else
|
||||
seqno = get_seqno_by_preds (place_to_insert);
|
||||
{
|
||||
seqno = get_seqno_by_preds (place_to_insert);
|
||||
|
||||
/* Sometimes the fences can move in such a way that there will be
|
||||
no instructions with positive seqno around this bookkeeping.
|
||||
This means that there will be no way to get to it by a regular
|
||||
fence movement. Never mind because we pick up such pieces for
|
||||
rescheduling anyways, so any positive value will do for now. */
|
||||
if (seqno < 0)
|
||||
{
|
||||
gcc_assert (pipelining_p);
|
||||
seqno = 1;
|
||||
}
|
||||
}
|
||||
|
||||
gcc_assert (seqno > 0);
|
||||
return seqno;
|
||||
|
Loading…
x
Reference in New Issue
Block a user