# HG changeset patch # User Gilles Duboscq # Date 1335346729 -7200 # Node ID 2baec1384f2d740eebcbb8f998e2e2cfff2ced44 # Parent d30314b667eba7e416cb0a7bb95b5fee3dbcf856 Do not remove empty diamond shape if there are guards in any of the branches and evacuate any other anchored values diff -r d30314b667eb -r 2baec1384f2d graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java --- 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);