https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104376
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement Last reconfirmed| |2022-02-04 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Target| |aarch64-*-* x86_64-*-* | |(with -mlzcnt) --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- There are two issues, both are tree level issues, though the second one works on the RTL level just fine. Right now we have: _1 = __builtin_clz (x_5(D)); _2 = 31 - _1; _3 = _2 ^ 31; But the _3 can be optimized to just _1.