Move calling convention conversion into TargetABI.

The code is tightly coupled to TargetABI (the transformations
there only make sense knowing that the right CC is selected).
This commit is contained in:
David Nadlinger
2013-02-18 10:02:32 +01:00
parent 1a132d5d41
commit 3392f70a4e
10 changed files with 109 additions and 43 deletions

View File

@@ -26,6 +26,26 @@ struct X86TargetABI : TargetABI
CfloatToInt cfloatToInt;
CompositeToInt compositeToInt;
llvm::CallingConv::ID callingConv(LINK l)
{
switch (l)
{
case LINKc:
case LINKcpp:
case LINKintrinsic:
return llvm::CallingConv::C;
case LINKd:
case LINKdefault:
return global.params.targetTriple.isOSWindows() ?
llvm::CallingConv::C : llvm::CallingConv::X86_StdCall;
case LINKpascal:
case LINKwindows:
return llvm::CallingConv::X86_StdCall;
default:
llvm_unreachable("Unhandled D linkage type.");
}
}
bool returnInArg(TypeFunction* tf)
{
#if DMDV2