From: Daniel Dunbar Date: Thu, 23 Apr 2009 07:00:09 +0000 (+0000) Subject: Add implicit definition of objc_msgSend. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9396dcf9699541f54bc3990c0dfbaa929464f5df;p=clang Add implicit definition of objc_msgSend. - As with malloc and friends, this is important where the return type on a 64-bit platform would otherwise end up discarding the upper 32-bits. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69874 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/Builtins.def b/include/clang/AST/Builtins.def index 766cb1143d..ca1a9d04b1 100644 --- a/include/clang/AST/Builtins.def +++ b/include/clang/AST/Builtins.def @@ -249,6 +249,11 @@ LIBBUILTIN(vfprintf, "iP*cC*a", "fP:1:", "stdio.h") LIBBUILTIN(vsnprintf, "ic*zcC*a", "fP:2:", "stdio.h") LIBBUILTIN(vsprintf, "ic*cC*a", "fP:1:", "stdio.h") +// FIXME: This type isn't very correct, it should be +// id objc_msgSend(id, SEL) +// but we need new type letters for that. +LIBBUILTIN(objc_msgSend, "v*.", "f", "objc/message.h") + // FIXME: asprintf and vasprintf aren't C99 functions. Should they be // target-specific builtins, perhaps? diff --git a/test/CodeGenObjC/implicit-objc_msgSend.m b/test/CodeGenObjC/implicit-objc_msgSend.m new file mode 100644 index 0000000000..4511cca338 --- /dev/null +++ b/test/CodeGenObjC/implicit-objc_msgSend.m @@ -0,0 +1,7 @@ +// RUN: clang-cc -triple x86_64-apple-darwin9 -emit-llvm -o %t %s && +// RUN: grep -F 'declare i8* @objc_msgSend(...)' %t + +typedef struct objc_selector *SEL; +id f0(id x, SEL s) { + return objc_msgSend(x, s); +}