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.


More information about the valhalla-dev mailing list