http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32648
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-02-27 02:50:36 UTC --- Right now on the trunk we produce: movl %edi, %edx movl %edi, %eax shrl $3, %edx shrl $5, %eax xorl %edx, %eax andl $1, %eax ret Which is much better than what we produce before.