# HG changeset patch # User neliasso # Date 1529066764 -7200 # Node ID d4fefc97ae14de804c4f7fef895f0788382bd40f # Parent 0ab1cac936b892b21dd61001f2f624c5300031ec 8205107: assert(c->Opcode() == Op_SafePoint) failed: broken outer loop Summary: Don't remove safepoint belonging to OuterStripMinedLoopEndNode Reviewed-by: kvn diff -r 0ab1cac936b8 -r d4fefc97ae14 src/hotspot/share/opto/callnode.cpp --- a/src/hotspot/share/opto/callnode.cpp Tue Jun 26 09:33:55 2018 -0700 +++ b/src/hotspot/share/opto/callnode.cpp Fri Jun 15 14:46:04 2018 +0200 @@ -1149,6 +1149,11 @@ assert( n0->is_Call(), "expect a call here" ); } if( n0->is_Call() && n0->as_Call()->guaranteed_safepoint() ) { + // Don't remove a safepoint belonging to an OuterStripMinedLoopEndNode. + // If the loop dies, they will be removed together. + if (has_out_with(Op_OuterStripMinedLoopEnd)) { + return this; + } // Useless Safepoint, so remove it return in(TypeFunc::Control); }