RFR(XS): 8202179: Compilation fails with assert(n->is_expensive()) failed: expensive nodes with non-null control here only
tobias.hartmann at oracle.com
Thu Apr 26 08:08:28 UTC 2018
On 26.04.2018 09:57, Roland Westrelin wrote:
> Is there something preventing ConvD2FNode::Ideal() from creating a
> SqrtFNode with a non null control (i.e. from a SqrtDNode with a non null
No, that is the normal path. SqrtDNodes are always created with a control input and the
corresponding SqrtFNodes should then have a control input as well (to avoid commoning).
The reported problem is in the exceptional case when the SqrtDNode is found to be unique (there is
no copy with the same inputs) and therefore the control input is removed. If we only then create a
SqrtFNode in Ideal(), we would use that NULL control as input which violates the assumption that
expensive nodes always have a non-NULL control.
> I suppose we could have 2 identical SqrtDNodes and then
> control wouldn't be cleared by cleanup_expensive_nodes?
Yes and in this case we would use that control for the corresponding SqrtFNode and treat it as
expensive as well.
More information about the hotspot-compiler-dev