summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInvocation.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/Frontend/CompilerInvocation.cpp
parenta345877ce85dc6daef41fd1ef8bad54c05e63491 (diff)
downloadbcm5719-llvm-fbe5ed7807b127f7cc8a08481e758a9e522c3d16.tar.gz
bcm5719-llvm-fbe5ed7807b127f7cc8a08481e758a9e522c3d16.zip
After some discussion, promote -fobjc-weak to a driver option.
rdar://problem/23415863 llvm-svn: 252187
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 468cc5746ce..7844b100d91 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -1483,16 +1483,19 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
Opts.ObjCWeakRuntime = Opts.ObjCRuntime.allowsWeak();
// ObjCWeak determines whether __weak is actually enabled.
- if (Opts.ObjCAutoRefCount) {
- Opts.ObjCWeak = Opts.ObjCWeakRuntime;
- } else if (Args.hasArg(OPT_fobjc_weak)) {
- if (Opts.getGC() != LangOptions::NonGC) {
+ // Note that we allow -fno-objc-weak to disable this even in ARC mode.
+ if (auto weakArg = Args.getLastArg(OPT_fobjc_weak, OPT_fno_objc_weak)) {
+ if (!weakArg->getOption().matches(OPT_fobjc_weak)) {
+ assert(!Opts.ObjCWeak);
+ } else if (Opts.getGC() != LangOptions::NonGC) {
Diags.Report(diag::err_objc_weak_with_gc);
- } else if (Opts.ObjCWeakRuntime) {
- Opts.ObjCWeak = true;
- } else {
+ } else if (!Opts.ObjCWeakRuntime) {
Diags.Report(diag::err_objc_weak_unsupported);
+ } else {
+ Opts.ObjCWeak = 1;
}
+ } else if (Opts.ObjCAutoRefCount) {
+ Opts.ObjCWeak = Opts.ObjCWeakRuntime;
}
if (Args.hasArg(OPT_fno_objc_infer_related_result_type))
OpenPOWER on IntegriCloud