8192762: LoopNode::verify_strip_mined() fails with "assert failed: only phis"
Roland Westrelin
rwestrel at redhat.com
Fri Dec 1 10:22:46 UTC 2017
http://cr.openjdk.java.net/~roland/8192762/webrev.00/
At the end of optimizations, the number of phis for the outer and inner
loops of a strip mined loop nest should be the same. That's verified in
Compile::final_graph_reshaping(). Compile::final_graph_reshaping()
clones the TypeFunc::Parms argument of uncommon calls. If that argument
is a Phi of the inner loop, then a new Phi is added and the verification
logic breaks. I suppose the argument cloning is so setting the argument
is sank in an uncommon path. In that case it doesn't make sense AFAIU to
clone the Phi so I propose any Phi be skipped by that code.
I didn't manage to write a test case. I could get a method with an
uncommon call whose TypeFunc::Parms argument is a Phi but processing
order of nodes by Compile::final_graph_reshaping() wouldn't trigger the
bug (loop head processed first).
Roland.
More information about the hotspot-compiler-dev
mailing list