diff options
Diffstat (limited to 'llvm/lib/Option/Option.cpp')
| -rw-r--r-- | llvm/lib/Option/Option.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Option/Option.cpp b/llvm/lib/Option/Option.cpp index d191e0e9274..5eb179fbd25 100644 --- a/llvm/lib/Option/Option.cpp +++ b/llvm/lib/Option/Option.cpp @@ -51,6 +51,7 @@ void Option::print(raw_ostream &O) const { P(JoinedOrSeparateClass); P(JoinedAndSeparateClass); P(RemainingArgsClass); + P(RemainingArgsJoinedClass); #undef P } @@ -234,6 +235,19 @@ Arg *Option::accept(const ArgList &Args, A->getValues().push_back(Args.getArgString(Index++)); return A; } + case RemainingArgsJoinedClass: { + Arg *A = new Arg(UnaliasedOption, Spelling, Index); + if (ArgSize != strlen(Args.getArgString(Index))) { + // An inexact match means there is a joined arg. + A->getValues().push_back(Args.getArgString(Index) + ArgSize); + } + Index++; + while (Index < Args.getNumInputArgStrings() && + Args.getArgString(Index) != nullptr) + A->getValues().push_back(Args.getArgString(Index++)); + return A; + } + default: llvm_unreachable("Invalid option kind!"); } |

