Mercurial > hg > graal-compiler
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);