http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21617
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-12-08 03:34:57 UTC --- -O1: .L2: movl %eax, %edx sarl $31, %edx shrl $24, %edx leal (%eax,%edx), %ecx andl $255, %ecx subl %edx, %ecx movb %cl, (%ebx,%eax) addl $1, %eax cmpl $8192, %eax jne .L2 -O2: .L4: movl 76(%esp), %ecx movl %edi, %ebx shrl $24, %ebx movzbl (%ecx), %edx addl $1, %ecx movl %ecx, 76(%esp) movl %esi, %ecx sall $8, %ecx xorl %ebx, %edx movl %edi, %ebx shldl $8, %esi, %ebx movl crc_table+4(,%edx,8), %edi movl crc_table(,%edx,8), %esi xorl %ebx, %edi xorl %ecx, %esi cmpl %eax, 76(%esp) jne .L4