Don't set the calling convention for ARM if it is already the default.

llvm-svn: 106106
This commit is contained in:
Rafael Espindola 2010-06-16 16:13:39 +00:00
parent 1c69bf00ae
commit a92c442437
1 changed files with 11 additions and 3 deletions

View File

@ -1776,14 +1776,22 @@ void ARMABIInfo::computeInfo(CGFunctionInfo &FI, ASTContext &Context,
it->info = classifyArgumentType(it->type, Context, VMContext);
}
// ARM always overrides the calling convention.
const llvm::Triple &Triple(Context.Target.getTriple());
llvm::CallingConv::ID DefaultCC;
if (Triple.getOS() == llvm::Triple::Darwin)
DefaultCC = llvm::CallingConv::ARM_APCS;
else
DefaultCC = llvm::CallingConv::ARM_AAPCS;
switch (getABIKind()) {
case APCS:
FI.setEffectiveCallingConvention(llvm::CallingConv::ARM_APCS);
if (DefaultCC != llvm::CallingConv::ARM_APCS)
FI.setEffectiveCallingConvention(llvm::CallingConv::ARM_APCS);
break;
case AAPCS:
FI.setEffectiveCallingConvention(llvm::CallingConv::ARM_AAPCS);
if (DefaultCC != llvm::CallingConv::ARM_AAPCS)
FI.setEffectiveCallingConvention(llvm::CallingConv::ARM_AAPCS);
break;
case AAPCS_VFP: