https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106727
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #1) > Confirmed. Expanding __builtin_popcount (n) <= 1 as (n & (n - 1)) == 0 > might be already done. The canonicalization could be applied if .POPCOUNT > is available. No, it is not already done, expanding `__builtin_popcount (n) == 1` is done (and including if n is known not to include 0 which is exapnded as `n & (n - 1) == 0`)