RFR(S): 8231291: C2: loop opts before EA should maximally unroll loops

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Fri Jan 10 18:34:19 UTC 2020


Thanks for the clarifications, Roland.

>> Doesn't it signal about a more general problem with
>> GraphKit::must_be_not_null()?
>>
>> What if a value becomes non-null after GraphKit::must_be_not_null()? Is
>> there a chance to hit the very same problem you observed?
> 
> The problem I hit is that if the value passed to must_be_not_null is
> already known to be not null. The null branch of must_be_not_null
> optimizes out at parse time and:
> 
> C->root()->add_req(halt);
> 
> adds top to the RootNode which causes some failures during matching
> because top is unexpected from Root.
> 
> Running RootNode::Ideal() would clean it up but it's not called. If the
> null branch becomes dead after parsing then, AFAICT, RootNode::Ideal()
> would be executed and the same problem would not happen.

Makes sense.

Do you know why RootNode::Ideal() isn't called during IGVN pass after 
parsing is over?

Best regards,
Vladimir Ivanov


More information about the hotspot-compiler-dev mailing list