diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-04-23 07:00:09 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-04-23 07:00:09 +0000 |
commit | 4645707034aa609960dcf1be20adf3ef8b99e526 (patch) | |
tree | b27753fee34d7d075217de3d4ec6eaaf7f741d42 | |
parent | 7b0344f6567bd60527366083b76829053490c4c5 (diff) | |
download | bcm5719-llvm-4645707034aa609960dcf1be20adf3ef8b99e526.tar.gz bcm5719-llvm-4645707034aa609960dcf1be20adf3ef8b99e526.zip |
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.
llvm-svn: 69874
-rw-r--r-- | clang/include/clang/AST/Builtins.def | 5 | ||||
-rw-r--r-- | clang/test/CodeGenObjC/implicit-objc_msgSend.m | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/include/clang/AST/Builtins.def b/clang/include/clang/AST/Builtins.def index 766cb1143dd..ca1a9d04b1f 100644 --- a/clang/include/clang/AST/Builtins.def +++ b/clang/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/clang/test/CodeGenObjC/implicit-objc_msgSend.m b/clang/test/CodeGenObjC/implicit-objc_msgSend.m new file mode 100644 index 00000000000..4511cca338b --- /dev/null +++ b/clang/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); +} |