]> granicus.if.org Git - clang/commitdiff
Add objc_getClass as an objc builtin function
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 30 Nov 2010 18:25:34 +0000 (18:25 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 30 Nov 2010 18:25:34 +0000 (18:25 +0000)
(// rdar://8592641). Also rename LANGUAGEID to
LanguageID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120437 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/Builtins.def
include/clang/Basic/Builtins.h
test/SemaObjC/builtin_objc_getClass.m [new file with mode: 0644]

index 527244719c86a6a2551287c405b8ca4b576ad75e..f3e8b2b9f2143ba50df74d0acbc0ce5998c8f781 100644 (file)
@@ -569,6 +569,8 @@ LIBBUILTIN(_longjmp, "vJi",       "fr",    "setjmp.h", ALL_LANGUAGES)
 LIBBUILTIN(siglongjmp, "vSJi",    "fr",    "setjmp.h", ALL_LANGUAGES)
 //   id objc_msgSend(id, SEL, ...)
 LIBBUILTIN(objc_msgSend, "GGH.",   "f",     "objc/message.h", OBJC_LANG)
+//   id objc_getClass(const char *name)
+LIBBUILTIN(objc_getClass, "GcC*",   "f",     "objc/runtime.h", OBJC_LANG)
 BUILTIN(__builtin_objc_memmove_collectable, "v*v*vC*z", "nF")
 
 // Builtin math library functions
index eb2604205280e1e1bbb301e9d32b5a211d656068..76f21c842b33b456a5df1816f750ab5427b76109 100644 (file)
@@ -32,7 +32,7 @@ namespace clang {
   class QualType;
   class LangOptions;
   
-  enum LANGUAGEID {
+  enum LanguageID {
     C_LANG = 0x1,     // builtin for c only.
     CXX_LANG = 0x2,   // builtin for cplusplus only.
     OBJC_LANG = 0x4,  // builtin for objective-c and objective-c++
@@ -49,7 +49,7 @@ enum ID {
 
 struct Info {
   const char *Name, *Type, *Attributes, *HeaderName;
-  LANGUAGEID builtin_lang;
+  LanguageID builtin_lang;
   bool Suppressed;
 
   bool operator==(const Info &RHS) const {
diff --git a/test/SemaObjC/builtin_objc_getClass.m b/test/SemaObjC/builtin_objc_getClass.m
new file mode 100644 (file)
index 0000000..de4713b
--- /dev/null
@@ -0,0 +1,4 @@
+// RUN: %clang_cc1 %s -fsyntax-only -std=gnu99 -verify
+// rdar://8592641
+Class f0() { return objc_getClass("a"); } // expected-warning {{implicitly declaring C library function 'objc_getClass' with type 'id (const char *)'}} \
+                                         // expected-note {{please include the header <objc/runtime.h> or explicitly provide a declaration for 'objc_getClass'}}