RFR(M): 8193130: Bad graph when unrolled loop bounds conflicts with range checks

Roland Westrelin rwestrel at redhat.com
Mon Jan 15 09:18:04 UTC 2018

Hi Tobias,

Thanks for looking at this. Here is a new webrev:


> compile.cpp
> - Why do you only remove the Opaque4Nodes after the macro expansion phase? Couldn't we avoid the additional
> igvn.optimize() by merging it into line 2346?

Opaque1 nodes are only guaranteed to have been eliminated once macro
expansion is over. So the igvn that follows could still cause some of
the predicates I added on the main loop to make the path to the main
loop go dead. That's why elimination of Opaque4 nodes is delayed that

> loopPredicate.cpp
> - line 780: Why is that check necessary? And wouldn't it make more sense to check this in the caller?

is_range_check_if() returns true for non RangeCheck nodes so there needs
to be a check for RangeCheck. I moved it into the caller.

> Please update the copyright dates to 2018. Did you run any performance testing?

I did eventhough I'm perplexed that we need to do that by hands. I took
care of all other comments as well.


More information about the hotspot-compiler-dev mailing list