changeset 20066:171b650a46ee

Fix for succeeding stamps of IntegerLessThanNode.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sun, 29 Mar 2015 18:59:59 +0200
parents a21dd6860791
children 745e0fbcbdaf
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java
diffstat 1 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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());
                     }
                 }
             }