On 08/05/2011 01:04 PM, Richard Guenther wrote:
(I believe that's the only bit we know sth about
when both vr.min and vr.max are negative).

Depends, if the value is between -2^16 and -1, we know something about all the bits to the left of bit 15. I think a better mask is:

* MUST_BE_NONZERO = vr->min with all bits zero after the leftmost zero bit. Or, the leftmost clz(~vr->min) bits are one.
* MAY_BE_NONZERO = all ones.

But something similar to xor_mask can likely be done with negative numbers too. For example, if the value is between -32769 and -32768, you know that bits 1 to 14 are zero, and bits starting at 15 are one.

Paolo

Reply via email to