[llvm-commits] [llvm] r95351 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/tailcall2.ll
Evan Cheng
evan.cheng at apple.com
Fri Feb 5 17:17:21 PST 2010
On Feb 5, 2010, at 12:51 PM, Duncan Sands wrote:
> Hi Evan,
>
>>> if you have a tail call with byval arguments, does this mean that an extra copy
>>> of the byval argument won't be made? This came up with the C++
>> Correct. The whole point is the byval argument is already available in the caller's incoming argument stack. This kind of tail call is especially beneficial.
>
> this is great - all of this tailcall work is doing nice things to thunks,
> for example the thunk in 2003-11-27-MultipleInheritanceThunk.cpp now compiles
> (using dragonegg) to this:
>
> _ZThn16_N20AliasAnalysisCounter13getModRefInfoE8CallSite:
> .Leh_func_begin2:
> subq $8, %rsp
> .Llabel1:
> addq $-16, %rdi
> addq $8, %rsp
> jmp _ZN20AliasAnalysisCounter13getModRefInfoE8CallSite # TAILCALL
>
> Pity about the stack pointer adjustments, but compared to what it was before,
> it's like Christmas came round all over again!
I am getting rid of the unnecessary stack ptr adjustments next.
Evan
>
> Ciao,
>
> Duncan.
More information about the llvm-commits
mailing list