http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9895
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
RTL opts now manage to clean this up enough (-O2 -funroll-loops):
integer_calc_one:
.LFB0:
.cfi_startproc
pushl %edi
.cfi_def_cfa_offset 8
.cfi_offset 7, -8
pushl %esi
.cfi_def_cfa_offset 12
.cfi_offset 6, -12
pushl %ebx
.cfi_def_cfa_offset 16
.cfi_offset 3, -16
subl $32, %esp
.cfi_def_cfa_offset 48
movl 48(%esp), %ebx
call rand
movl %eax, %esi
movl %ebx, %eax
sarl $31, %eax
shrl $24, %eax
leal (%ebx,%eax), %ecx
movzbl %cl, %ecx
subl %eax, %ecx
addl $2, %ecx
leal (%esi,%ecx), %ebx
addl 28(%esp), %esi
movl %ebx, %eax
cltd
idivl %ecx
movl %ecx, %edx
movl %eax, %edi
subl %ecx, %edi
addl %esi, %ecx
imull %edi, %edx
addl %ebx, %ecx
addl %ecx, %eax
addl %edi, %eax
addl %edx, %eax
addl 24(%esp), %eax
addl $32, %esp
.cfi_def_cfa_offset 16
.cfi_def_cfa_offset 16
popl %ebx
.cfi_restore 3
.cfi_def_cfa_offset 12
popl %esi
.cfi_restore 6
.cfi_def_cfa_offset 8
popl %edi
.cfi_restore 7
.cfi_def_cfa_offset 4
ret