# HG changeset patch # User Roland Schatz # Date 1409831085 -7200 # Node ID c72182ae4476d8e5f90e9f7bdd384a10aebda1fd # Parent 7c12f8aae0c9bc2fd16cd50a7a6eae74000f2145 Remove redundant Begin nodes before LoopExit. diff -r 7c12f8aae0c9 -r c72182ae4476 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java Thu Sep 04 13:33:04 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java Thu Sep 04 13:44:45 2014 +0200 @@ -46,6 +46,11 @@ @Override public void simplify(SimplifierTool tool) { - // + Node prev = this.predecessor(); + while (prev.getNodeClass().is(BeginNode.class) && prev.usages().isEmpty()) { + BeginNode begin = (BeginNode) prev; + prev = prev.predecessor(); + graph().removeFixed(begin); + } } } diff -r 7c12f8aae0c9 -r c72182ae4476 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Thu Sep 04 13:33:04 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Thu Sep 04 13:44:45 2014 +0200 @@ -147,11 +147,11 @@ } } } - survivingSuccessor.simplify(simplifierTool); Debug.log("Converting deopt on %-5s branch of %s to guard for remaining branch %s.", deoptBegin == ifNode.trueSuccessor() ? "true" : "false", ifNode, otherBegin); FixedNode next = pred.next(); pred.setNext(guard); guard.setNext(next); + survivingSuccessor.simplify(simplifierTool); return; }