Mercurial > hg > truffle
changeset 15571:9a5b5a5b2246
more accurately determine if a IntegerStamp is illegal
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Fri, 09 May 2014 14:45:48 +0200 |
parents | 1b5b1471b3f3 |
children | 01bce59c2749 d331b7c3d7c4 |
files | graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java |
diffstat | 1 files changed, 1 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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;