зеркало из https://github.com/microsoft/clang.git
objc_msgSend is not a builtin type in non-objc mode.
Fixes //rdar://8686888 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119813 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
a30d6cdc3a
Коммит
0bc5c66a1c
|
@ -4295,8 +4295,13 @@ Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl,
|
|||
if (CheckFunctionCall(FDecl, TheCall))
|
||||
return ExprError();
|
||||
|
||||
if (unsigned BuiltinID = FDecl->getBuiltinID())
|
||||
return CheckBuiltinFunctionCall(BuiltinID, TheCall);
|
||||
if (unsigned BuiltinID = FDecl->getBuiltinID()) {
|
||||
// When not in Objective-C mode, there is no builtin 'id' type.
|
||||
// We won't have pre-defined library functions which use this type.
|
||||
if (getLangOptions().ObjC1 ||
|
||||
Context.BuiltinInfo.GetTypeString(BuiltinID)[0] != 'G')
|
||||
return CheckBuiltinFunctionCall(BuiltinID, TheCall);
|
||||
}
|
||||
} else if (NDecl) {
|
||||
if (CheckBlockCall(NDecl, TheCall))
|
||||
return ExprError();
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
// RUN: %clang_cc1 %s -fsyntax-only -verify
|
||||
// rdar://8686888
|
||||
|
||||
typedef struct objc_selector *SEL;
|
||||
typedef struct objc_object *id;
|
||||
|
||||
extern "C" __attribute__((visibility("default"))) id objc_msgSend(id self, SEL op, ...)
|
||||
__attribute__((visibility("default")));
|
||||
|
||||
inline void TCFReleaseGC(void * object)
|
||||
{
|
||||
static SEL SEL_release;
|
||||
objc_msgSend((id)object, SEL_release);
|
||||
}
|
Загрузка…
Ссылка в новой задаче