src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/CountedLoopInfo.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/CountedLoopInfo.java Fri Feb 02 10:37:48 2018 -0500
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/CountedLoopInfo.java Fri Feb 02 17:28:17 2018 -0800
@@ -73,12 +73,18 @@
Stamp stamp = iv.valueNode().stamp(NodeView.DEFAULT);
ValueNode range = sub(graph, end, iv.initNode());
+ ValueNode max;
+ ValueNode min;
ValueNode oneDirection;
if (iv.direction() == Direction.Up) {
oneDirection = ConstantNode.forIntegerStamp(stamp, 1, graph);
+ max = end;
+ min = iv.initNode();
} else {
assert iv.direction() == Direction.Down;
oneDirection = ConstantNode.forIntegerStamp(stamp, -1, graph);
+ max = iv.initNode();
+ min = end;
}
if (oneOff) {
range = add(graph, range, oneDirection);
@@ -95,7 +101,7 @@
return div;
}
ConstantNode zero = ConstantNode.forIntegerStamp(stamp, 0, graph);
- return graph.unique(new ConditionalNode(graph.unique(new IntegerLessThanNode(zero, div)), div, zero));
+ return graph.unique(new ConditionalNode(graph.unique(new IntegerLessThanNode(max, min)), zero, div));
}
/**