From: Daniel Dunbar Date: Tue, 12 Aug 2008 00:21:46 +0000 (+0000) Subject: Move some ObjC preprocessor definitions into X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fba5cb12adbe95d79855e91db018b863ce48387e;p=clang Move some ObjC preprocessor definitions into InitializePredefinedMacros(). - Also now properly wired to -fobjc-gc, -fnext-runtime. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54661 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index bc35d7fe8e..d4ec04835c 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -53,23 +53,8 @@ public: Define(Defs, "linux"); #endif - if (1) { // FIXME: -fobjc-gc controls this. - Define(Defs, "__weak", ""); - Define(Defs, "__strong", ""); - } else { - Define(Defs, "__weak", "__attribute__((objc_gc(weak)))"); - Define(Defs, "__strong", "__attribute__((objc_gc(strong)))"); - Define(Defs, "__OBJC_GC__"); - } - - // darwin_constant_cfstrings controls this. - Define(Defs, "__CONSTANT_CFSTRINGS__"); - if (0) // darwin_pascal_strings Define(Defs, "__PASCAL_STRINGS__"); - - if (0) // FIXME: -fnext-runtime controls this - Define(Defs, "__NEXT_RUNTIME__"); } }; @@ -86,15 +71,6 @@ public: Define(Defs, "__SUN__"); Define(Defs, "__SOLARIS__"); #endif - - if (1) {// -fobjc-gc controls this. - Define(Defs, "__weak", ""); - Define(Defs, "__strong", ""); - } else { - Define(Defs, "__weak", "__attribute__((objc_gc(weak)))"); - Define(Defs, "__strong", "__attribute__((objc_gc(strong)))"); - Define(Defs, "__OBJC_GC__"); - } } }; diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index dcb399d1fa..a4ff8bb734 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -401,8 +401,25 @@ static void InitializePredefinedMacros(Preprocessor &PP, DefineBuiltinMacro(Buf, "__STDC_VERSION__=199409L"); DefineBuiltinMacro(Buf, "__STDC_HOSTED__=1"); - if (PP.getLangOptions().ObjC1) + if (PP.getLangOptions().ObjC1) { DefineBuiltinMacro(Buf, "__OBJC__=1"); + + if (PP.getLangOptions().getGCMode() == LangOptions::NonGC) { + DefineBuiltinMacro(Buf, "__weak="); + DefineBuiltinMacro(Buf, "__strong="); + } else { + DefineBuiltinMacro(Buf, "__weak=__attribute__((objc_gc(weak)))"); + DefineBuiltinMacro(Buf, "__strong=__attribute__((objc_gc(strong)))"); + DefineBuiltinMacro(Buf, "__OBJC_GC__=1"); + } + + if (PP.getLangOptions().NeXTRuntime) + DefineBuiltinMacro(Buf, "__NEXT_RUNTIME__=1"); + + // darwin_constant_cfstrings controls this. This is also dependent + // on other things like the runtime I believe. + DefineBuiltinMacro(Buf, "__CONSTANT_CFSTRINGS__=1"); + } if (PP.getLangOptions().ObjC2) DefineBuiltinMacro(Buf, "OBJC_NEW_PROPERTIES");