diff options
author | John McCall <rjmccall@apple.com> | 2015-11-05 19:19:56 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2015-11-05 19:19:56 +0000 |
commit | fbe5ed7807b127f7cc8a08481e758a9e522c3d16 (patch) | |
tree | a9797411d3e8f32878802ee4f88a1d812cf3dc21 /clang/lib/Driver/Tools.cpp | |
parent | a345877ce85dc6daef41fd1ef8bad54c05e63491 (diff) | |
download | llvm-fbe5ed7807b127f7cc8a08481e758a9e522c3d16.zip llvm-fbe5ed7807b127f7cc8a08481e758a9e522c3d16.tar.gz llvm-fbe5ed7807b127f7cc8a08481e758a9e522c3d16.tar.bz2 |
After some discussion, promote -fobjc-weak to a driver option.
rdar://problem/23415863
llvm-svn: 252187
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index d3276b9..03d4c6b 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -4816,6 +4816,23 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } } + // Pass down -fobjc-weak or -fno-objc-weak if present. + if (types::isObjC(InputType)) { + auto WeakArg = Args.getLastArg(options::OPT_fobjc_weak, + options::OPT_fno_objc_weak); + if (!WeakArg) { + // nothing to do + } else if (GCArg) { + if (WeakArg->getOption().matches(options::OPT_fobjc_weak)) + D.Diag(diag::err_objc_weak_with_gc); + } else if (!objcRuntime.allowsWeak()) { + if (WeakArg->getOption().matches(options::OPT_fobjc_weak)) + D.Diag(diag::err_objc_weak_unsupported); + } else { + WeakArg->render(Args, CmdArgs); + } + } + if (Args.hasFlag(options::OPT_fapplication_extension, options::OPT_fno_application_extension, false)) CmdArgs.push_back("-fapplication-extension"); |