https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89536
--- Comment #8 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Isn't that different though? I mean, even if we have int type and have [0, > 1] range and have a check that the value isn't 0, then it must be 1. Then I don't understand the problem in the BIT_NOT_EXPR case: we have int type and [0, 1] range for rhs; if we know that BIT_NOT_EXPR is zero, we can deduce than it must be 1 too.