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