From: Jan Hubicka Date: Fri, 21 Apr 2023 16:13:35 +0000 (+0200) Subject: Fix boostrap failure in tree-ssa-loop-ch.cc X-Git-Tag: basepoints/gcc-15~9989 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f7b9258e0d4127c1f441440c9a9c794295bbbe0f;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/tree-ssa-loop-ch.cc b/gcc/tree-ssa-loop-ch.cc index 560df39893ef..0025bc16e432 100644 --- a/gcc/tree-ssa-loop-ch.cc +++ b/gcc/tree-ssa-loop-ch.cc @@ -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