[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