# HG changeset patch # User neliasso # Date 1529063857 -7200 # Node ID 70ccca2e60aad21522b4848187ce5dd71ae4f543 # Parent 9fdfe5ca0e5eea40928388c58c278aa43f9500b0 8204927: ZGC: assert(phase->idom(head) == head->in(LoopNode::EntryControl)) failed Summary: Update idom Reviewed-by: roland diff -r 9fdfe5ca0e5e -r 70ccca2e60aa src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp --- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Tue Jun 19 10:57:13 2018 +0200 +++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Fri Jun 15 13:57:37 2018 +0200 @@ -1181,8 +1181,14 @@ if (is_strip_mined && (i == LoopNode::EntryControl)) { assert(region->in(i)->is_OuterStripMinedLoop(), ""); igvn.replace_input_of(region->in(i), i, out_ctrl); + phase->set_idom(region->in(i), out_ctrl, phase->dom_depth(out_ctrl)); } else if (ctrl == region->in(i)) { igvn.replace_input_of(region, i, out_ctrl); + // Only update the idom if is the loop entry we are updating + // - A loop backedge doesn't change the idom + if (region->is_Loop() && i == LoopNode::EntryControl) { + phase->set_idom(region, out_ctrl, phase->dom_depth(out_ctrl)); + } } else { Node* iff = region->in(i)->in(0); igvn.replace_input_of(iff, 0, out_ctrl);