]> granicus.if.org Git - clang/commitdiff
Fix rewriter bug <rdar://problem/5929344> clang ObjC rewriter: "extern int __CFConsta...
authorSteve Naroff <snaroff@apple.com>
Thu, 15 May 2008 21:12:10 +0000 (21:12 +0000)
committerSteve Naroff <snaroff@apple.com>
Thu, 15 May 2008 21:12:10 +0000 (21:12 +0000)
Have clang predefine OBJC_NEW_PROPERTIES (which is what gcc does).

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

Driver/RewriteObjC.cpp
lib/Lex/Preprocessor.cpp

index cf715d0cdcde8d2e0aa73c5fa9cefaca95150ea2..3f40e4a67acaf083e4752d5a3a7e3096faad1eb1 100644 (file)
@@ -330,8 +330,6 @@ void RewriteObjC::Initialize(ASTContext &context) {
   Preamble += "__OBJC_RW_EXTERN int objc_exception_match";
   Preamble += "(struct objc_class *, struct objc_object *);\n";
   Preamble += "__OBJC_RW_EXTERN Protocol *objc_getProtocol(const char *);\n";
-  if (LangOpts.Microsoft) 
-    Preamble += "#undef __OBJC_RW_EXTERN\n";
   Preamble += "#ifndef __FASTENUMERATIONSTATE\n";
   Preamble += "struct __objcFastEnumerationState {\n\t";
   Preamble += "unsigned long state;\n\t";
@@ -347,11 +345,13 @@ void RewriteObjC::Initialize(ASTContext &context) {
   Preamble += "  char *str;\n";
   Preamble += "  long length;\n";
   Preamble += "};\n";
-  Preamble += "extern int __CFConstantStringClassReference[];\n";
+  Preamble += "__OBJC_RW_EXTERN int __CFConstantStringClassReference[];\n";
   Preamble += "#define __NSCONSTANTSTRINGIMPL\n";
   Preamble += "#endif\n";
-  if (LangOpts.Microsoft) 
+  if (LangOpts.Microsoft) {
+    Preamble += "#undef __OBJC_RW_EXTERN\n";
     Preamble += "#define __attribute__(X)\n";
+  }
 }
 
 
index ccc9a8781ff6c69cbbeab9c6e0b39d2819d67727..8dac3f066fac0fd8fbfd916f4ac38f8d95bdf5f0 100644 (file)
@@ -402,6 +402,8 @@ static void InitializePredefinedMacros(Preprocessor &PP,
   DefineBuiltinMacro(Buf, "__STDC_HOSTED__=1");
   if (PP.getLangOptions().ObjC1)
     DefineBuiltinMacro(Buf, "__OBJC__=1");
+  if (PP.getLangOptions().ObjC2)
+    DefineBuiltinMacro(Buf, "OBJC_NEW_PROPERTIES");
 
   // Add __builtin_va_list typedef.
   {