aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2015-11-05 19:19:56 +0000
committerJohn McCall <rjmccall@apple.com>2015-11-05 19:19:56 +0000
commitfbe5ed7807b127f7cc8a08481e758a9e522c3d16 (patch)
treea9797411d3e8f32878802ee4f88a1d812cf3dc21 /clang/lib/Driver/Tools.cpp
parenta345877ce85dc6daef41fd1ef8bad54c05e63491 (diff)
downloadllvm-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.cpp17
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");