# HG changeset patch # User Thomas Wuerthinger # Date 1427648399 -7200 # Node ID 171b650a46ee75ef54accbdf4e1359c565f4ca13 # Parent a21dd6860791b4aa49d2b082d528f37bc1163bf3 Fix for succeeding stamps of IntegerLessThanNode. diff -r a21dd6860791 -r 171b650a46ee graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Sun Mar 29 18:57:14 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Sun Mar 29 18:59:59 2015 +0200 @@ -137,11 +137,11 @@ // x < y long xUpperBound = xStamp.upperBound(); long yUpperBound = yStamp.upperBound(); - if (yUpperBound <= xUpperBound) { - if (yUpperBound != CodeUtil.minValue(bits)) { - yUpperBound--; - } - return new IntegerStamp(bits, xStamp.lowerBound(), yUpperBound, xStamp.downMask(), xStamp.upMask()); + if (yUpperBound == CodeUtil.minValue(bits)) { + return null; + } else if (yUpperBound <= xUpperBound) { + assert yUpperBound != CodeUtil.minValue(bits); + return new IntegerStamp(bits, xStamp.lowerBound(), yUpperBound - 1, xStamp.downMask(), xStamp.upMask()); } } } @@ -170,11 +170,11 @@ // y > x long xLowerBound = xStamp.lowerBound(); long yLowerBound = yStamp.lowerBound(); - if (xLowerBound >= yLowerBound) { - if (xLowerBound != CodeUtil.maxValue(bits)) { - xLowerBound++; - } - return new IntegerStamp(bits, xLowerBound, yStamp.upperBound(), yStamp.downMask(), yStamp.upMask()); + if (xLowerBound == CodeUtil.maxValue(bits)) { + return null; + } else if (xLowerBound >= yLowerBound) { + assert xLowerBound != CodeUtil.maxValue(bits); + return new IntegerStamp(bits, xLowerBound + 1, yStamp.upperBound(), yStamp.downMask(), yStamp.upMask()); } } }