------- Comment #6 from jakub at gcc dot gnu dot org 2009-09-10 11:45 ------- I bet the bug is in r151573, tree-ssa-math-opts.s difference between stage1 compiled tree-ssa-math-opts.c done using a day old stage1 cc1 and current stage1 cc1 is: @@ -1050,7 +1050,7 @@ find_bswap_1: addl $-1, 64(%esp) movl %edx, 68(%esp) movl 64(%esp), %edx - adcl $-1, 68(%esp) + adcl $0, 68(%esp) movl 68(%esp), %ecx andl %edx, (%edi) andl %ecx, 4(%edi) @@ -1368,7 +1368,7 @@ find_bswap_1: addl $-1, 80(%esp) movl %edx, 84(%esp) movl 80(%esp), %edx - adcl $-1, 84(%esp) + adcl $0, 84(%esp) movl 84(%esp), %ecx andl (%edi), %edx andl 4(%edi), %ecx @@ -1738,7 +1738,7 @@ execute_optimize_bswap: movl 40(%esp), %eax movl %edx, 44(%esp) movl 40(%esp), %edx - adcl $-1, 44(%esp) + adcl $0, 44(%esp) movl 44(%esp), %ecx andl $67305985, %eax movl %eax, 56(%esp) which strongly suggests the shifting got broken.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41324