# HG changeset patch # User Lukas Stadler # Date 1376907163 -7200 # Node ID 307eec0f460f70dc4c7a31dd3f301ce7bd5b23a5 # Parent 90201030d3cf9158bd0f424f925822b1ce0c08aa fix incorrect lower bound in StampTool diff -r 90201030d3cf -r 307eec0f460f graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerStampTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerStampTest.java Sat Aug 17 16:01:48 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerStampTest.java Mon Aug 19 12:12:43 2013 +0200 @@ -174,6 +174,10 @@ StampTool.add(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 1), StampFactory.forInteger(Kind.Long, Integer.MIN_VALUE, Integer.MAX_VALUE))); assertEquals(StampFactory.forInteger(Kind.Int, -2147483647, 31 - 2147483647), StampTool.add(StampFactory.forInteger(Kind.Int, 0, 31), StampFactory.forInteger(Kind.Int, -2147483647, -2147483647))); + } + @Test + public void testAnd() { + assertEquals(new IntegerStamp(Kind.Int, Integer.MIN_VALUE, 0x40000000L, 0, 0xc0000000L), StampTool.and(StampFactory.forKind(Kind.Int), StampFactory.forConstant(Constant.forInt(0xc0000000)))); } } diff -r 90201030d3cf -r 307eec0f460f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Sat Aug 17 16:01:48 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Mon Aug 19 12:12:43 2013 +0200 @@ -163,7 +163,7 @@ lowerBound = downMask; upperBound = upMask; } else { - lowerBound = upMask; + lowerBound = downMask | (-1L << (kind.getBitCount() - 1)); upperBound = kind.getMaxValue() & upMask; } if (kind == Kind.Int) {