https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103633
Bug ID: 103633 Summary: Missed popcount recognition Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: acoplan at gcc dot gnu.org Target Milestone: --- For: int f1 (unsigned long b) { int c = 0; while (b) { b &= b - 1; c++; } return c; } int f2(unsigned long x) { int c = 0; for (; x; x >>= 1) { if (x & 1) c++; } return c; } GCC recognizes f1 as popcount but not the more naive f2.