changeset 11414:ec21e399e4be

Create new IfNode in IfNode simplification
author Gilles Duboscq <duboscq@ssw.jku.at>
date Sun, 25 Aug 2013 16:23:52 +0200
parents 2c3ca4b71965
children c355f6b32fa6
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java
diffstat 1 files changed, 5 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Sun Aug 25 15:18:57 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Sun Aug 25 16:23:52 2013 +0200
@@ -140,16 +140,15 @@
     @Override
     public void simplify(SimplifierTool tool) {
         if (condition() instanceof LogicNegationNode) {
-            LogicNegationNode negation = (LogicNegationNode) condition();
-            setCondition(negation.getInput());
-
             AbstractBeginNode trueSucc = trueSuccessor();
             AbstractBeginNode falseSucc = falseSuccessor();
             setTrueSuccessor(null);
             setFalseSuccessor(null);
-            setTrueSuccessor(falseSucc);
-            setFalseSuccessor(trueSucc);
-            setTrueSuccessorProbability(1 - trueSuccessorProbability);
+            LogicNegationNode negation = (LogicNegationNode) condition();
+            IfNode newIfNode = graph().add(new IfNode(negation.getInput(), falseSucc, trueSucc, 1 - trueSuccessorProbability));
+            predecessor().replaceFirstSuccessor(this, newIfNode);
+            this.safeDelete();
+            return;
         }
 
         if (condition() instanceof LogicConstantNode) {