# HG changeset patch # User Tom Rodriguez # Date 1426546303 25200 # Node ID c278c8c727aa2a6e6d4f6d2a0bdfd6023bc28805 # Parent 6575b4e3f6298c007fe6bd4f10fdd957749c0cf2 More checks that InductionVariable.direction is valid diff -r 6575b4e3f629 -r c278c8c727aa graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java Mon Mar 16 15:46:28 2015 -0700 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java Mon Mar 16 15:51:43 2015 -0700 @@ -60,6 +60,7 @@ if (iv.direction() == Direction.Up) { range = add(graph, range, ConstantNode.forIntegerStamp(stamp, 1, graph)); } else { + assert iv.direction() == Direction.Down; range = sub(graph, range, ConstantNode.forIntegerStamp(stamp, 1, graph)); } } @@ -76,6 +77,7 @@ } public long constantMaxTripCount() { + assert iv.direction() != null; long off = oneOff ? iv.direction() == Direction.Up ? 1 : -1 : 0; long max = (((ConstantNode) end).asJavaConstant().asLong() + off - iv.constantInit()) / iv.constantStride(); return Math.max(0, max); diff -r 6575b4e3f629 -r c278c8c727aa graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java Mon Mar 16 15:46:28 2015 -0700 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java Mon Mar 16 15:51:43 2015 -0700 @@ -218,11 +218,12 @@ if (initStamp.upperBound() > limitStamp.lowerBound()) { return false; } - } else { - assert iv.direction() == Direction.Down; + } else if (iv.direction() == Direction.Down) { if (initStamp.lowerBound() < limitStamp.upperBound()) { return false; } + } else { + return false; } oneOff = true; break;