https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85376
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- There is nothing weird about what cprop1 does, __builtin_ffs (0) is known to be 0, with so many disabled optimizations we just don't optimize it away nor simplify earlier. So the mov eax, 0 # tmp201, bsf edx, eax # _28, tmp201 mov ecx, -16 # tmp204, add eax, ecx # tmp203, tmp204 part is just fine, we replaced the edx in the addition with eax which is known to hold the same value, and because DCE is disabled nothing removes the dead bsf.