Fix boostrap failure in tree-ssa-loop-ch.cc
I managed to mix up patch and its WIP version in previous commit. This patch adds the missing edge iterator and also fixes a side case where new loop header would have multiple latches. gcc/ChangeLog: * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous commit.
This commit is contained in:
parent
1fe9bef9f5
commit
f7b9258e0d
1 changed files with 9 additions and 7 deletions
|
@ -484,7 +484,10 @@ ch_base::copy_headers (function *fun)
|
|||
/* Ensure that the header will have just the latch as a predecessor
|
||||
inside the loop. */
|
||||
if (!single_pred_p (exit->dest))
|
||||
exit = single_pred_edge (split_edge (exit));
|
||||
{
|
||||
header = split_edge (exit);
|
||||
exit = single_pred_edge (header);
|
||||
}
|
||||
|
||||
entry = loop_preheader_edge (loop);
|
||||
|
||||
|
@ -547,16 +550,17 @@ ch_base::copy_headers (function *fun)
|
|||
/* Find correct latch. We only duplicate chain of conditionals so
|
||||
there should be precisely two edges to the new header. One entry
|
||||
edge and one to latch. */
|
||||
edge_iterator ei;
|
||||
edge e;
|
||||
FOR_EACH_EDGE (e, ei, loop->header->preds)
|
||||
if (header != e->src)
|
||||
{
|
||||
loop->latch = e->src;
|
||||
break;
|
||||
}
|
||||
/* Ensure that the latch and the preheader is simple (we know that they
|
||||
are not now, since there was the loop exit condition. */
|
||||
split_edge (loop_preheader_edge (loop));
|
||||
split_edge (loop_latch_edge (loop));
|
||||
/* Ensure that the latch is simple. */
|
||||
if (!single_succ_p (loop_latch_edge (loop)->src))
|
||||
split_edge (loop_latch_edge (loop));
|
||||
|
||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||
{
|
||||
|
@ -572,8 +576,6 @@ ch_base::copy_headers (function *fun)
|
|||
|
||||
if (changed)
|
||||
{
|
||||
if (flag_checking)
|
||||
verify_loop_structure ();
|
||||
update_ssa (TODO_update_ssa);
|
||||
/* After updating SSA form perform CSE on the loop header
|
||||
copies. This is esp. required for the pass before
|
||||
|
|
Loading…
Add table
Reference in a new issue