http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #5 from Uros Bizjak <ubizjak at gmail dot com> 2011-08-03 10:27:35 
UTC ---
(In reply to comment #4)
> (In reply to comment #0)
> 
> > Many lea insns can be combined with the load/store insn followed.
> 
> I have a patch that generates addr32 prefix. The result:

Er, wrong one (that was -m64). This one is -mx32:

    .file    "pr49781.c"
    .text
    .p2align 4,,15
    .globl    foo
    .type    foo, @function
foo:
.LFB0:
    .cfi_startproc
    xorl    %eax, %eax
    testl    %edi, %edi
    leal    4+heap(%rip), %edx
    jle    .L10
    .p2align 4,,10
    .p2align 3
.L7:
    movl    %eax, (%edx,%eax,4)
    addl    $1, %eax
    cmpl    %edi, %eax
    jne    .L7
    leal    -1(%rdi), %eax
    movl    %eax, %ecx
.L3:
    movl    $573, %esi
    leal    2296+heap(%rip), %r10d
    leal    2292+heap(%rip), %r9d
    leal    heap(%rip), %r11d
    jmp    .L5
    .p2align 4,,10
    .p2align 3
.L11:
    movl    (%r11d,%eax,4), %ecx
    subl    $1, %eax
.L5:
    movl    4+heap(%rip), %r8d
    movl    %eax, %edx
    subl    $2, %esi
    subl    %edi, %edx
    movl    %ecx, 4+heap(%rip)
    sall    $3, %edx
    cmpl    $1, %eax
    movl    %r8d, (%r10d,%edx)
    movl    %ecx, (%r9d,%edx)
    jg    .L11
    movl    %eax, heap_len(%rip)
    movl    %esi, heap_max(%rip)
    ret
.L10:
    movl    heap(%rip), %ecx
    xorl    %edi, %edi
    movl    $-1, %eax
    jmp    .L3
    .cfi_endproc
.LFE0:
    .size    foo, .-foo
    .section    .text.startup,"ax",@progbits
    .p2align 4,,15
    .globl    main
    .type    main, @function
main:
.LFB1:
    .cfi_startproc
    subq    $8, %rsp
    .cfi_def_cfa_offset 16
    movl    $286, %edi
    call    foo@PLT
    xorl    %eax, %eax
    addq    $8, %rsp
    .cfi_def_cfa_offset 8
    ret
    .cfi_endproc
.LFE1:
    .size    main, .-main
    .local    heap_len
    .comm    heap_len,4,4
    .local    heap_max
    .comm    heap_max,4,4
    .local    heap
    .comm    heap,2292,32
    .ident    "GCC: (GNU) 4.7.0 20110803 (experimental) [trunk revision
177229]"
    .section    .note.GNU-stack,"",@progbits

Reply via email to