[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/CodeGen/X86/combine-lds.ll test/CodeGen/X86/fastcc.ll

Chris Lattner clattner at apple.com
Sun Sep 21 12:47:19 PDT 2008


On Sep 4, 2008, at 3:59 PM, Evan Cheng wrote:

> Author: evancheng
> Date: Thu Sep  4 17:59:58 2008
> New Revision: 55807
>
> URL: http://llvm.org/viewvc/llvm-project?rev=55807&view=rev
> Log:
> For whatever the reason, x86 CallingConv::Fast (i.e. fastcc) was not  
> passing scalar arguments in registers. This patch defines a new  
> fastcc CC which is slightly different from the FastCall CC. In  
> addition to passing integer arguments in ECX and EDX, it also  
> specify doubles are passed in 8-byte slots which are 8-byte aligned  
> (instead of 4-byte aligned). This avoids a potential performance  
> hazard where doubles span cacheline boundaries.

Okay, cool but:

> @@ -1100,6 +1100,8 @@
>     return CC_X86_32_FastCall;
>   else if (CC == CallingConv::Fast && PerformTailCallOpt)
>     return CC_X86_32_TailCall;
> +  else if (CC == CallingConv::Fast)
> +    return CC_X86_32_FastCC;

Does this mean that "PerformTailCallOpt" changes the ABI?

-Chris




More information about the llvm-commits mailing list