# HG changeset patch # User Gilles Duboscq # Date 1308165232 -7200 # Node ID ed63c8695fad3ff981075f01d9ec7da9e1096373 # Parent ce38e01aa596f375fcbbdbda6d672f1769ebed87 Fix LoopCounter merging diff -r ce38e01aa596 -r ed63c8695fad graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/LoopPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/LoopPhase.java Wed Jun 15 19:55:14 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/LoopPhase.java Wed Jun 15 21:13:52 2011 +0200 @@ -27,6 +27,7 @@ import com.oracle.max.graal.compiler.ir.*; import com.oracle.max.graal.compiler.value.*; import com.oracle.max.graal.graph.*; +import com.sun.cri.ci.*; public class LoopPhase extends Phase { @@ -59,13 +60,15 @@ LoopCounter c2 = acounters[j]; if (c2 != null && c1.stride().valueEqual(c2.stride())) { acounters[j] = null; - IntegerSub sub = new IntegerSub(c1.kind, c2.init(), c1.init(), graph); - IntegerAdd add = new IntegerAdd(c1.kind, c1, sub, graph); - Phi phi = new Phi(c1.kind, loopBegin, graph); // TODO (gd) assumes order on loppBegin preds + CiKind kind = c1.kind; + IntegerSub sub = new IntegerSub(kind, c2.init(), c1.init(), graph); + IntegerAdd addStride = new IntegerAdd(kind, sub, c1.stride(), graph); + IntegerAdd add = new IntegerAdd(kind, c1, addStride, graph); + Phi phi = new Phi(kind, loopBegin, graph); // TODO (gd) assumes order on loopBegin preds phi.addInput(c2.init()); phi.addInput(add); c2.replace(phi); - System.out.println("--> merged Loop Counters"); + //System.out.println("--> merged Loop Counters"); } } }