https://gcc.gnu.org/bugzilla/show_bug.cgi?id=18146
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> --- Mainline now generates: foo: cmpl $5, %eax ja .L3 movl %eax, %ecx movl $1, %edx sall %cl, %edx andl $42, %edx setne %al movzbl %al, %eax ret .L3: xorl %eax, %eax (*) movzbl %al, %eax ret movzbl at (*) is not needed, but original problem is gone. So, fixed.