--- old/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java 2014-11-17 20:38:12.000000000 -0800 +++ new/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java 2014-11-17 20:38:12.000000000 -0800 @@ -54,12 +54,12 @@ int max; long mask = CodeUtil.mask(valueStamp.getBits()); int firstAlwaysSetBit = scan(valueStamp.downMask() & mask); + int firstMaybeSetBit = scan(valueStamp.upMask() & mask); if (firstAlwaysSetBit == -1) { int lastMaybeSetBit = BitScanReverseNode.scan(valueStamp.upMask() & mask); - min = -1; + min = firstMaybeSetBit; max = lastMaybeSetBit; } else { - int firstMaybeSetBit = scan(valueStamp.upMask() & mask); min = firstMaybeSetBit; max = firstAlwaysSetBit; }