https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107043
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think ccp tracks instead a pair of value and mask, X & ~mask == value & ~mask. So, set bits in the mask mean don't know if the bit is set or clear, clear bits mean we know it and the corresponding bit in value says if it is known to be zero or non-zero. That way we can express these 5 bits are known to be zero and these other 3 bits are known to be set, the rest unknown.