https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110228
--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So the `&` case with r14-1597-g64d90d06d2db43538c8a45 should be ok always I think as you are anding with a known non-uninitialized variable (that is always 0 or 1) that will produce a value which is known to be 0 or 1. It is one that produces `|` that exposes the issue here. Even if gimple level says it is 0/1, doing a `|` will produce an uninitialized value still and the upper bits are not defined and things go off in the weeds then.