[llvm-bugs] [Bug 35637] Really bad codegen for libc++ vector

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Feb 22 20:29:26 PST 2021


https://bugs.llvm.org/show_bug.cgi?id=35637

hiraditya <hiraditya at msn.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |hiraditya at msn.com
         Resolution|---                         |FIXED

--- Comment #11 from hiraditya <hiraditya at msn.com> ---
This bug is fixed with Eric's patch.

clang trunk -O3 generates:

```
f1():                                 # @f1()
        push    r14
        push    rbx
        push    rax
        mov     rbx, rdi
        xorps   xmm0, xmm0
        movups  xmmword ptr [rdi], xmm0
        mov     qword ptr [rdi + 16], 0
        mov     edi, 8294400
        call    operator new(unsigned long)
        mov     qword ptr [rbx], rax
        lea     r14, [rax + 8294400]
        mov     qword ptr [rbx + 16], r14
        mov     edx, 8294400
        mov     rdi, rax
        xor     esi, esi
        call    memset at PLT
        mov     qword ptr [rbx + 8], r14
        mov     rax, rbx
        add     rsp, 8
        pop     rbx
        pop     r14
        ret
f2():                                 # @f2()
        push    r15
        push    r14
        push    rbx
        mov     edi, 24
        call    operator new(unsigned long)
        mov     r15, rax
        xorps   xmm0, xmm0
        movups  xmmword ptr [rax], xmm0
        mov     qword ptr [rax + 16], 0
        mov     edi, 8294400
        call    operator new(unsigned long)
        mov     qword ptr [r15], rax
        mov     rbx, rax
        add     rbx, 8294400
        mov     qword ptr [r15 + 16], rbx
        mov     edx, 8294400
        mov     rdi, rax
        xor     esi, esi
        call    memset at PLT
        mov     qword ptr [r15 + 8], rbx
        mov     rax, r15
        pop     rbx
        pop     r14
        pop     r15
        ret
        mov     r14, rax
        mov     rdi, r15
        call    operator delete(void*)
        mov     rdi, r14
        call    _Unwind_Resume at PLT
main:                                   # @main
        xor     eax, eax
        ret
```

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210223/5ad31ecd/attachment.html>


More information about the llvm-bugs mailing list