# HG changeset patch # User Gilles Duboscq # Date 1309274271 -7200 # Node ID 1ddf16c7271d93ca4d04628e41e316a897a1ad5b # Parent 05dcd49a2df2522b263931a3b24534167020f5dc Fix for dead Phis in loop nodes detection diff -r 05dcd49a2df2 -r 1ddf16c7271d graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/LoopUtil.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/LoopUtil.java Tue Jun 28 17:08:45 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/LoopUtil.java Tue Jun 28 17:17:51 2011 +0200 @@ -142,12 +142,17 @@ for (Node usage : n.dataUsages()) { if (usage instanceof Phi) { // filter out data graph cycles Phi phi = (Phi) usage; - Merge merge = phi.merge(); - if (merge instanceof LoopBegin) { - LoopBegin phiLoop = (LoopBegin) merge; - int backIndex = phiLoop.phiPredecessorIndex(phiLoop.loopEnd()); - if (phi.valueAt(backIndex) == n) { - continue; + if (!phi.isDead()) { + Merge merge = phi.merge(); + if (merge instanceof LoopBegin) { + LoopBegin phiLoop = (LoopBegin) merge; + int backIndex = phiLoop.phiPredecessorIndex(phiLoop.loopEnd()); + if (backIndex >= phi.valueCount()) { + System.out.println("Wierd phi : " + phi); + } + if (phi.valueAt(backIndex) == n) { + continue; + } } } }