RFR(S): 8230061: # assert(mode == ControlAroundStripMined && use == sfpt) failed: missed a node

Tobias Hartmann tobias.hartmann at oracle.com
Wed Aug 28 09:07:15 UTC 2019


Hi Roland,

Why do you need a cast to Node* in node.cpp:711?

And wouldn't it be better to bail out of the loop and return false if u == root?

Thanks,
Tobias

On 28.08.19 10:09, Roland Westrelin wrote:
> 
> http://cr.openjdk.java.net/~roland/8230061/webrev.00/
> 
> An LShiftI, that's in an outer strip mined loop because it's referenced
> from the safepoint node, is transformed by
> PhaseIdealLoop::remix_address_expressions(). This causes dead nodes to
> be produced. In the same loop opts pass, the inner strip mined loop is
> unrolled. When the loop body is cloned, C2 hits the dead nodes created
> above (uses from the loop body in the outer strip mined loop not
> referenced from the safepoint) and the assert fires. The fix I propose
> is to relax the assert so it takes dead nodes into account.
> 
> Roland.
> 


More information about the hotspot-compiler-dev mailing list