From 1f3388fec4997d12507ebe66f0b0487991f9895e Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 14 Mar 2014 12:54:25 +0000 Subject: re PR ipa/60518 (ICE: in verify_loop_structure, at cfgloop.c:1647) 2014-03-14 Richard Biener PR middle-end/60518 * cfghooks.c (split_block): Properly adjust all loops the block was a latch of. * g++.dg/pr60518.C: New testcase. From-SVN: r208567 --- gcc/cfghooks.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'gcc/cfghooks.c') diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index 7cf3cd5..bc1634a 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -510,9 +510,13 @@ split_block (basic_block bb, void *i) if (current_loops != NULL) { + edge_iterator ei; + edge e; add_bb_to_loop (new_bb, bb->loop_father); - if (bb->loop_father->latch == bb) - bb->loop_father->latch = new_bb; + /* Identify all loops bb may have been the latch of and adjust them. */ + FOR_EACH_EDGE (e, ei, new_bb->succs) + if (e->dest->loop_father->latch == bb) + e->dest->loop_father->latch = new_bb; } res = make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU); -- cgit v1.1