Mercurial > hg > graal-compiler
changeset 22712:c2484dfe93e3
Remove Phi nodes whithout any input
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Mon, 28 Sep 2015 17:17:42 +0200 |
parents | 3ffc0d85d79a |
children | ddbd40b1a30e |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java |
diffstat | 2 files changed, 11 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Mon Sep 28 15:08:41 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Mon Sep 28 17:17:42 2015 +0200 @@ -233,4 +233,12 @@ return merge() instanceof LoopBeginNode; } + public boolean hasValidInput() { + for (ValueNode n : values()) { + if (n != null) { + return true; + } + } + return false; + } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Mon Sep 28 15:08:41 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Mon Sep 28 17:17:42 2015 +0200 @@ -164,6 +164,9 @@ if (usage.isAlive()) { if (usage instanceof PhiNode) { usage.replaceFirstInput(node, null); + if (!((PhiNode) usage).hasValidInput()) { + propagateKill(usage); + } } else { propagateKill(usage); }