Mercurial > hg > truffle
changeset 3085:1ddf16c7271d
Fix for dead Phis in loop nodes detection
author | Gilles Duboscq <gilles.duboscq@oracle.com> |
---|---|
date | Tue, 28 Jun 2011 17:17:51 +0200 |
parents | 05dcd49a2df2 |
children | bee93b329be2 |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/LoopUtil.java |
diffstat | 1 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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; + } } } }