[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


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

            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];
};

__attribute__((noinline))
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
  ret
goo(): # @goo()
  push rbx
  mov rbx, rdi
  call moo()
  mov rax, rbx
  pop rbx
  ret

goo could just be:

goo():
  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