Mercurial > hg > graal-jvmci-8
changeset 5412:bb47fd6a6290
When removing inputs from phi nodes, kill unused values
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 16 May 2012 13:24:32 +0200 |
parents | 128b3f574991 |
children | 098c5eba749d |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java |
diffstat | 1 files changed, 5 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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); + } } }