RFR(L): 8185556: [MVT] C2 compiler support for non-flattened value type fields
Roland Westrelin
rwestrel at redhat.com
Thu Sep 28 16:00:12 UTC 2017
>> Also, usually after the graph is constructed with GraphKit, there is a
>> pass of PhaseRemoveUseless to disconnect useless nodes. Your new use of
>> GraphKit during igvn is not followed by PhaseRemoveUseless. I wonder if
>> it's a problem and if some untransformed node could stay connected to
>> graph.
>
> Why is that different to the version that does not use the GraphKit?
>
> All nodes that were added by the GraphKit should end up being processed by a subsequent PhaseIterGVN::optimize() because
> they are guaranteed to be added to the worklist - which is verified by PhaseIterGVN::verify_PhaseIterGVN(). IGVN should
> be "smart" enough to kill dead nodes, right?
Sure if the node is transform()'ed but not always with something like:
Node* n = new Node(1);
n->set_req(0, some_other_node);
if (some_condition) {
// n unused
} else {
n = gvn.transform(n);
}
But that must not be a common code pattern.
Roland.
More information about the valhalla-dev
mailing list