https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63321
--- Comment #7 from Oleg Endo <olegendo at gcc dot gnu.org> --- Another example: unsigned int count_trailing_nonzero_bits (unsigned int v, unsigned int c) { c += v & 1; v >>= 1; c += v & 1; v >>= 1; c += v & 1; v >>= 1; c += v & 1; v >>= 1; c += v & 1; v >>= 1; c += v & 1; v >>= 1; c += v & 1; v >>= 1; c += v & 1; v >>= 1; return c; } ideally should compile to: mov #0,r1 shlr r4 movt r0 shlr r4 addc r1,r0 shlr r4 addc r1,r0 shlr r4 addc r1,r0 shlr r4 addc r1,r0 shlr r4 addc r1,r0 shlr r4 addc r1,r0 shlr r4 addc r1,r0