RFR(S): 8196296: Lucene test crashes C2 compilation

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jan 26 22:49:14 UTC 2018


Good.

Thanks,
Vladimir

On 1/26/18 2:21 PM, Roland Westrelin wrote:
> 
> http://cr.openjdk.java.net/~roland/8196296/webrev.00/
> 
> C2 attempts to merge 2 back to back ifs with the same condition:
> 
> if (condition) {
> 
> } else {
> 
> }
> 
> if (condition) {
> 
> but the second if is a counted loop end test. This causes the counted
> loop to not keep a canonical shape. With debug builds, loop strip mining
> verification code then causes the test to crash. With product builds,
> the logic that finalizes the outer strip mined loop bails out but leaves
> the outer loop. The test of the outer loop is turned into an If with a
> constant input that's not optimized out. In the reported failure,
> Matcher code then breaks because the If has a non Cmp input. I fixed
> the logic in OuterStripMinedLoopNode::adjust_strip_mined_loop() so that
> when it bails out, it causes the outer loop to go away and prevent 2
> back to back ifs to merge if the second one is a counted loop end.
> 
> Roland.
> 


More information about the hotspot-compiler-dev mailing list