summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Option
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2015-05-04 18:00:13 +0000
committerHans Wennborg <hans@hanshq.net>2015-05-04 18:00:13 +0000
commit8d8146fa73fcb7bd75c976605b395605d685bbc5 (patch)
treeb784d76093d28eca5bf73837e02f5565b1666d19 /llvm/lib/Option
parent9ac2f9b2d867bc98a081343deed9ec4adeccf064 (diff)
downloadbcm5719-llvm-8d8146fa73fcb7bd75c976605b395605d685bbc5.tar.gz
bcm5719-llvm-8d8146fa73fcb7bd75c976605b395605d685bbc5.zip
Option parsing: properly handle flag aliases for joined options (PR23394)
A joined option always needs to have an argument, even if it's an empty one. Clang would previously assert when trying to use --extra-warnings, which is a flag alias for -W, which is a joined option. llvm-svn: 236434
Diffstat (limited to 'llvm/lib/Option')
-rw-r--r--llvm/lib/Option/Option.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Option/Option.cpp b/llvm/lib/Option/Option.cpp
index e29d6491c7f..221414d79e7 100644
--- a/llvm/lib/Option/Option.cpp
+++ b/llvm/lib/Option/Option.cpp
@@ -125,6 +125,11 @@ Arg *Option::accept(const ArgList &Args,
Val += strlen(Val) + 1;
}
}
+
+ if (UnaliasedOption.getKind() == JoinedClass && !getAliasArgs())
+ // A Flag alias for a Joined option must provide an argument.
+ A->getValues().push_back("");
+
return A;
}
case JoinedClass: {
OpenPOWER on IntegriCloud