https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78317
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- The issue is probably that we very early end up with return x & 0x10 ? 0x10 : 0; and uncprop transforms that only to return x & 0x10 ? 0x10 : x; rather than return x & 0x10 ? x : x;