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

Reply via email to