forked from OSchip/llvm-project
Implement the MSABI and SysVABI calling conventions for Objective-C method declarations. This appears to be an omission from r189644.
llvm-svn: 197584
This commit is contained in:
parent
4b0ffe7e49
commit
0362a6d466
|
@ -123,7 +123,7 @@ CodeGenTypes::arrangeFreeFunctionType(CanQual<FunctionProtoType> FTP) {
|
|||
return ::arrangeFreeFunctionType(*this, argTypes, FTP);
|
||||
}
|
||||
|
||||
static CallingConv getCallingConventionForDecl(const Decl *D) {
|
||||
static CallingConv getCallingConventionForDecl(const Decl *D, bool IsWindows) {
|
||||
// Set the appropriate calling convention for the Function.
|
||||
if (D->hasAttr<StdCallAttr>())
|
||||
return CC_X86StdCall;
|
||||
|
@ -146,6 +146,12 @@ static CallingConv getCallingConventionForDecl(const Decl *D) {
|
|||
if (D->hasAttr<IntelOclBiccAttr>())
|
||||
return CC_IntelOclBicc;
|
||||
|
||||
if (D->hasAttr<MSABIAttr>())
|
||||
return IsWindows ? CC_C : CC_X86_64Win64;
|
||||
|
||||
if (D->hasAttr<SysVABIAttr>())
|
||||
return IsWindows ? CC_X86_64SysV : CC_C;
|
||||
|
||||
return CC_C;
|
||||
}
|
||||
|
||||
|
@ -293,7 +299,8 @@ CodeGenTypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD,
|
|||
}
|
||||
|
||||
FunctionType::ExtInfo einfo;
|
||||
einfo = einfo.withCallingConv(getCallingConventionForDecl(MD));
|
||||
bool IsWindows = getContext().getTargetInfo().getTriple().isOSWindows();
|
||||
einfo = einfo.withCallingConv(getCallingConventionForDecl(MD, IsWindows));
|
||||
|
||||
if (getContext().getLangOpts().ObjCAutoRefCount &&
|
||||
MD->hasAttr<NSReturnsRetainedAttr>())
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
@end
|
||||
|
||||
@implementation Test
|
||||
- (void)test __attribute__((stdcall)) {
|
||||
- (void)test __attribute__((stdcall)) {}
|
||||
// CHECK: define{{.*}}x86_stdcallcc{{.*}}Test test
|
||||
}
|
||||
|
||||
- (void)test2 __attribute__((ms_abi)) {}
|
||||
// CHECK: define{{.*}}x86_64_win64cc{{.*}}Test test2
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue