changeset 6585:5c1787a0be00

removing intermediate materializations is disabled when the compare input to an if has more than one usage
author Doug Simon <doug.simon@oracle.com>
date Mon, 29 Oct 2012 14:44:53 +0100
parents a3eb814ea564
children cfd5c59df26a
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Oct 29 14:41:20 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Oct 29 14:44:53 2012 +0100
@@ -224,6 +224,10 @@
         }
 
         CompareNode compare = (CompareNode) condition();
+        if (compare.usages().count() != 1) {
+            return false;
+        }
+
         if (!(predecessor() instanceof MergeNode)) {
             return false;
         }
@@ -287,6 +291,12 @@
         connectEnds(trueEnds, phiValues, trueSuccessor, merge, tool);
 
         GraphUtil.killCFG(merge);
+
+        assert !merge.isAlive() : merge;
+        assert !phi.isAlive() : phi;
+        assert !compare.isAlive() : compare;
+        assert !this.isAlive() : this;
+
         return true;
     }