[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

Arnold Schwaighofer arnold.schwaighofer at gmail.com
Mon Sep 22 04:09:21 PDT 2008


> TailCall:
>  // Nested function trampolines are currently not supported by fastcc.
Should read:
Nested function trampolines are currently not supported by fastcc when
-tailcallopt is enabled because i don't know the implications of
trampolines.

>  // The first 3 integer arguments, if marked 'inreg' and if the call is not
>  // a vararg call, are passed in integer registers.
>  CCIfNotVarArg<CCIfInReg<CCIfType<[i32], CCAssignToReg<[EAX, EDX]>>>>,
Should read:
// the first 2
> FastCC:
>  // The 'nest' parameter, if any, is passed in EAX.
>  CCIfNest<CCAssignToReg<[EAX]>>,
>
>  // The first 2 integer arguments are passed in ECX/EDX
>  CCIfType<[i32], CCAssignToReg<[ECX, EDX]>>,
>
> First of all, the comment about "nested function not being supported by
> fastcc" looks wrong. Secondly, it's not clear to me why the integer
> registers have to be marked inreg to be passed in registers (only EAX, EDX,
> what's the 3rd). Arnold, any ideas?
The only 'reason' is that the calling convention was a copy of the std
convention.



More information about the llvm-commits mailing list