# HG changeset patch # User Lukas Stadler # Date 1399639548 -7200 # Node ID 9a5b5a5b22461e34567f5044c550093f92957737 # Parent 1b5b1471b3f3543e6735542e715ac55f7c24a1dd more accurately determine if a IntegerStamp is illegal diff -r 1b5b1471b3f3 -r 9a5b5a5b2246 graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java --- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java Fri May 09 09:49:48 2014 +0200 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java Fri May 09 14:45:48 2014 +0200 @@ -183,7 +183,7 @@ private Stamp createStamp(IntegerStamp other, long newUpperBound, long newLowerBound, long newDownMask, long newUpMask) { assert getBits() == other.getBits(); - if (newLowerBound > newUpperBound || (newDownMask & (~newUpMask)) != 0) { + if (newLowerBound > newUpperBound || (newDownMask & (~newUpMask)) != 0 || (newUpMask == 0 && (newLowerBound > 0 || newUpperBound < 0))) { return illegal(); } else if (newLowerBound == lowerBound && newUpperBound == upperBound && newDownMask == downMask && newUpMask == upMask) { return this;