[llvm-commits] [llvm] r55807 - in /llvm/trunk: lib/Target/X86/X86CallingConv.td lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/2007-08-13-SpillerReuse.ll test/CodeGen/X86/2008-02-22-ReMatBug.ll test/CodeGen/X86/coalescer-commute3.ll test/Cod

Chris Lattner clattner at apple.com
Mon Sep 22 08:50:43 PDT 2008


On Sep 22, 2008, at 2:31 AM, Arnold Schwaighofer wrote:

> On Mon, Sep 22, 2008 at 9:54 AM, Duncan Sands <baldrick at free.fr>  
> wrote:
>>>> Does this mean that "PerformTailCallOpt" changes the ABI?
>>
>> Arnold already agreed that tailcall could use the new calling  
>> convention,
>> i.e. be the same as fastcc.

> BUT there still is an ABI difference when -tailcallopt is enabled.

>
> So in cases where a library would be compiled with -tailcallopt
> enabled and a the program using the library would be compiled without
> -tailcallopt all hell would break loose.

After sleeping on it, I think that this is actually ok.  We reserve  
the right to change the 'fastcc' ABI across LLVM releases anyway,  
which means that it isn't a stable thing that people can depend on.   
The optimizers only introduce it when it knows all callers of a  
function, thus it should be safe to do whatever we want within a  
model, so long as it is consistent within that module.

Front-end authors that are using this should know that -tailcallopt  
affects the fastcc ABI and not use it if possible.

However, isn't the plan to eventually remove -tailcallopt, enabling it  
all the time?

-Chris




More information about the llvm-commits mailing list