# HG changeset patch # User Gilles Duboscq # Date 1337167472 -7200 # Node ID bb47fd6a62901af3af20a29a682a5588136ca668 # Parent 128b3f57499115a3a0da8c89903ee8efecf8c0cf When removing inputs from phi nodes, kill unused values diff -r 128b3f574991 -r bb47fd6a6290 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Tue May 15 16:27:12 2012 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Wed May 16 13:24:32 2012 +0200 @@ -28,6 +28,7 @@ import com.oracle.graal.graph.*; import com.oracle.graal.graph.iterators.*; import com.oracle.graal.nodes.spi.*; +import com.oracle.graal.nodes.util.*; /** * Denotes the merging of multiple control-flow paths. @@ -81,7 +82,11 @@ assert predIndex != -1; deleteEnd(pred); for (PhiNode phi : phis()) { + ValueNode removedValue = phi.valueAt(predIndex); phi.removeInput(predIndex); + if (removedValue != null && removedValue.isAlive() && removedValue.usages().isEmpty() && GraphUtil.isFloatingNode().apply(removedValue)) { + GraphUtil.killWithUnusedFloatingInputs(removedValue); + } } }