diff options
author | Hans Wennborg <hans@hanshq.net> | 2015-05-04 18:00:13 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2015-05-04 18:00:13 +0000 |
commit | 8d8146fa73fcb7bd75c976605b395605d685bbc5 (patch) | |
tree | b784d76093d28eca5bf73837e02f5565b1666d19 /llvm/lib/Option | |
parent | 9ac2f9b2d867bc98a081343deed9ec4adeccf064 (diff) | |
download | bcm5719-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.cpp | 5 |
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: { |