Mercurial > hg > graal-compiler
changeset 5678:2f714239cc68
Fix warning,
Fix to FullUnrolling
Fix to peeling when a loop end disappears
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 21 Jun 2012 17:27:58 +0200 |
parents | 7546ffffdca8 |
children | b32dc49bc024 |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragment.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragmentInside.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoopFullUnrollPhase.java |
diffstat | 3 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragment.java Thu Jun 21 16:37:19 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragment.java Thu Jun 21 17:27:58 2012 +0200 @@ -213,7 +213,7 @@ StructuredGraph graph = graph(); for (BeginNode earlyExit : toHirBlocks(original().loop().lirLoop().exits)) { FixedNode next = earlyExit.next(); - if (!this.contains(earlyExit)) { + if (earlyExit.isDeleted() || !this.contains(earlyExit)) { continue; } BeginNode newEarlyExit = getDuplicatedNode(earlyExit);
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragmentInside.java Thu Jun 21 16:37:19 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragmentInside.java Thu Jun 21 17:27:58 2012 +0200 @@ -28,8 +28,8 @@ import com.oracle.graal.graph.*; import com.oracle.graal.graph.iterators.*; import com.oracle.graal.nodes.*; +import com.oracle.graal.nodes.PhiNode.PhiType; import com.oracle.graal.nodes.VirtualState.NodeClosure; -import com.oracle.graal.nodes.PhiNode.*; import com.oracle.graal.nodes.util.*;
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoopFullUnrollPhase.java Thu Jun 21 16:37:19 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoopFullUnrollPhase.java Thu Jun 21 17:27:58 2012 +0200 @@ -32,7 +32,9 @@ @Override protected void run(StructuredGraph graph) { if (graph.hasLoops()) { - while (true) { + boolean peeled; + do { + peeled = false; final LoopsData dataCounted = new LoopsData(graph); dataCounted.detectedCountedLoops(); for (final LoopEx loop : dataCounted.countedLoops()) { @@ -40,11 +42,11 @@ Debug.log("FullUnroll %s", loop); LoopTransformations.fullUnroll(loop); Debug.dump(graph, "After fullUnroll %s", loop); - continue; + peeled = true; + break; } } - break; - } + } while(peeled); } }