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