diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-04-28 23:25:24 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-04-28 23:25:24 +0000 |
commit | 5e2a8ac6599f0c68b14afb2f328ac98b264f770a (patch) | |
tree | 69ee39e515ee0ff54d16f2b8c9eee6c76dafd36d /lib/Driver/Tools.cpp | |
parent | 1e3f5bab00661c612044675c1a9d3ec3237802da (diff) |
Driver: Add support for -fobjc-abi-version=.
- <rdar://problem/7919678>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102559 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index c407d8c37c..450c5692bc 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1227,8 +1227,20 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // -fobjc-nonfragile-abi=0 is default. if (types::isObjC(InputType)) { + unsigned Version = 1; if (Args.hasArg(options::OPT_fobjc_nonfragile_abi) || - getToolChain().IsObjCNonFragileABIDefault()) { + getToolChain().IsObjCNonFragileABIDefault()) + Version = 2; + if (Arg *A = Args.getLastArg(options::OPT_fobjc_abi_version_EQ)) { + if (llvm::StringRef(A->getValue(Args)) == "1") + Version = 1; + else if (llvm::StringRef(A->getValue(Args)) == "2") + Version = 2; + else + D.Diag(clang::diag::err_drv_clang_unsupported) << A->getAsString(Args); + } + + if (Version == 2) { CmdArgs.push_back("-fobjc-nonfragile-abi"); // -fobjc-dispatch-method is only relevant with the nonfragile-abi, and |