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);
                         }