diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-04-04 18:50:28 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-04-04 18:50:28 +0000 |
commit | e982cc0ea3e9255b8aacf8f0bff559e9b1cfd72e (patch) | |
tree | 0cea416e0cf055d24bf98008527ab0342fcced53 /lib/Driver/Tools.cpp | |
parent | 15b77319d0ce4332275992b2f191898a1df50efe (diff) |
modern objc translator. Add more
rewriter specific option to cc1 with -rewrite-objc.
// rdar://11143173
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154037 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 4c1cd392af..e5be1e08b6 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1279,6 +1279,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // Select the appropriate action. bool IsRewriter = false; + bool IsModernRewriter = false; + if (isa<AnalyzeJobAction>(JA)) { assert(JA.getType() == types::TY_Plist && "Invalid output type."); CmdArgs.push_back("-analyze"); @@ -1349,6 +1351,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-emit-pch"); } else if (JA.getType() == types::TY_RewrittenObjC) { CmdArgs.push_back("-rewrite-objc"); + IsModernRewriter = true; } else if (JA.getType() == types::TY_RewrittenLegacyObjC) { CmdArgs.push_back("-rewrite-objc"); IsRewriter = true; @@ -2226,7 +2229,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, ObjCRuntime objCRuntime; unsigned objcABIVersion = 0; bool NeXTRuntimeIsDefault - = (IsRewriter || getToolChain().getTriple().isOSDarwin()); + = (IsRewriter || IsModernRewriter || + getToolChain().getTriple().isOSDarwin()); if (Args.hasFlag(options::OPT_fnext_runtime, options::OPT_fgnu_runtime, NeXTRuntimeIsDefault)) { objCRuntime.setKind(ObjCRuntime::NeXT); @@ -2260,8 +2264,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); } else { // Otherwise, determine if we are using the non-fragile ABI. - bool NonFragileABIIsDefault - = (!IsRewriter && getToolChain().IsObjCNonFragileABIDefault()); + bool NonFragileABIIsDefault = + (IsModernRewriter || + (!IsRewriter && getToolChain().IsObjCNonFragileABIDefault())); if (Args.hasFlag(options::OPT_fobjc_nonfragile_abi, options::OPT_fno_objc_nonfragile_abi, NonFragileABIIsDefault)) { @@ -2341,7 +2346,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // -fobjc-infer-related-result-type is the default, except in the Objective-C // rewriter. - if (IsRewriter) + if (IsRewriter || IsModernRewriter) CmdArgs.push_back("-fno-objc-infer-related-result-type"); // Handle -fobjc-gc and -fobjc-gc-only. They are exclusive, and -fobjc-gc-only |