[llvm-commits] [llvm] r95351 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/tailcall2.ll

Duncan Sands baldrick at free.fr
Fri Feb 5 12:51:51 PST 2010


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!

Ciao,

Duncan.



More information about the llvm-commits mailing list