https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97759
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Unfortunately we don't TER calls, so the expander doesn't see POPCOUNT (x) == 1 or POPCOUNT (x) <= 1 and the isel pass seems to be (at least so far) extremely vector specific; another option is do it in match.pd or in tree-ssa-math-opts.c