diff options
| author | Steve Naroff <snaroff@apple.com> | 2008-05-15 21:12:10 +0000 |
|---|---|---|
| committer | Steve Naroff <snaroff@apple.com> | 2008-05-15 21:12:10 +0000 |
| commit | ad91868aa60740bd834a1c98a7f2440bd06fde1b (patch) | |
| tree | cc7c02adaad2e2eaac97faebafb01ef3034eadee | |
| parent | 6ef726a06690c96f647d07510fc3eddd27b260b0 (diff) | |
| download | bcm5719-llvm-ad91868aa60740bd834a1c98a7f2440bd06fde1b.tar.gz bcm5719-llvm-ad91868aa60740bd834a1c98a7f2440bd06fde1b.zip | |
Fix rewriter bug <rdar://problem/5929344> clang ObjC rewriter: "extern int __CFConstantStringClassReference[];" should be extern "C".
Have clang predefine OBJC_NEW_PROPERTIES (which is what gcc does).
llvm-svn: 51163
| -rw-r--r-- | clang/Driver/RewriteObjC.cpp | 8 | ||||
| -rw-r--r-- | clang/lib/Lex/Preprocessor.cpp | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/clang/Driver/RewriteObjC.cpp b/clang/Driver/RewriteObjC.cpp index cf715d0cdcd..3f40e4a67ac 100644 --- a/clang/Driver/RewriteObjC.cpp +++ b/clang/Driver/RewriteObjC.cpp @@ -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"; + } } diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index ccc9a8781ff..8dac3f066fa 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -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. { |

