[14] RFR(S): 8233656: assert(d->is_CFG() && n->is_CFG()) failed: must have CFG nodes
Tobias Hartmann
tobias.hartmann at oracle.com
Tue Nov 12 09:14:05 UTC 2019
Hi Vladimir,
On 11.11.19 13:06, Vladimir Ivanov wrote:
> Yes, I'm curious whether it's enough to check that in(0) is NULL, TOP, or Proj(_, TOP). Are there
> any other important cases left?
I don't think in(0) == NULL can/should happen and I don't think there are any other cases left.
> My concerns is that other usages of PhaseGVN::is_dominator() may be affected the same way as well.
The method currently has two implementations:
- PhaseIdealLoop::is_dominator
- PhaseGVN/PhaseIterGVN:is_dominator -> PhaseGVN::is_dominator_helper
Both assert is_CFG() for the arguments so it's the callers responsibility to ensure that.
> It looks like PhaseGVN::is_dominator_helper() would benefit from additional checks:
>
> bool PhaseGVN::is_dominator_helper(Node *d, Node *n, bool linear_only) {
> if (d->is_top() || n->is_top()) {
> return false;
> }
> assert(d->is_CFG() && n->is_CFG(), "must have CFG nodes");
> ...
Do you mean simply converting the assert to a check or adding additional asserts?
> As an example, InitializeNode::detect_init_independence() does some control normalization first:
Yes but that method processes data and control edges.
Thanks,
Tobias
More information about the hotspot-compiler-dev
mailing list