[llvm-bugs] [Bug 35065] New: Missing tail calls for large structs

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Oct 24 12:54:35 PDT 2017


            Bug ID: 35065
           Summary: Missing tail calls for large structs
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
          Assignee: unassignedbugs at nondot.org
          Reporter: jmuizelaar at mozilla.com
                CC: llvm-bugs at lists.llvm.org

The following code:

struct Foo {
   int o[16];

Foo moo()
        return {0};

Foo goo()
        return moo();

compiles to:

moo(): # @moo()
  xorps xmm0, xmm0
  movups xmmword ptr [rdi + 48], xmm0
  movups xmmword ptr [rdi + 32], xmm0
  movups xmmword ptr [rdi + 16], xmm0
  movups xmmword ptr [rdi], xmm0
  mov rax, rdi
goo(): # @goo()
  push rbx
  mov rbx, rdi
  call moo()
  mov rax, rbx
  pop rbx

goo could just be:

  jmp moo

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/20171024/9494264e/attachment.html>

More information about the llvm-bugs mailing list