changeset 5293:2baec1384f2d

Do not remove empty diamond shape if there are guards in any of the branches and evacuate any other anchored values
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 25 Apr 2012 11:38:49 +0200
parents d30314b667eb
children 2cf9e7d965d6
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Tue Apr 24 17:22:36 2012 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Wed Apr 25 11:38:49 2012 +0200
@@ -117,7 +117,7 @@
                 tool.addToWorkList(falseSuccessor());
                 ((StructuredGraph) graph()).removeSplit(this, FALSE_EDGE);
             }
-        } else {
+        } else if (trueSuccessor().guards().isEmpty() && falseSuccessor().guards().isEmpty()) {
             if (trueSuccessor().next() instanceof EndNode && falseSuccessor().next() instanceof EndNode) {
                 EndNode trueEnd = (EndNode) trueSuccessor().next();
                 EndNode falseEnd = (EndNode) falseSuccessor().next();
@@ -165,6 +165,8 @@
         MergeNode merge = trueEnd.merge();
         merge.prepareDelete(pred);
         assert merge.usages().isEmpty();
+        trueSuccessor.prepareDelete();
+        falseSuccessor.prepareDelete();
 
         FixedNode next = merge.next();
         merge.setNext(null);