https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112382
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #1) > Note ((~b&a)>>shift) & 1 is two more GIMPLE ops than (a&b) != a so I'd > expect the reverse transform on GIMPLE and maybe target specific expansion > tweaks (or combine at work). Right, that is why I put the component as middle-end. Specifically because I think `(a&b) != a` should be the Canonical form and only expanded either in isel or expand .