diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:03:47 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:04:23 +0000 |
| commit | 7fa27ce4a07f19b07799a767fc29416f3b625afb (patch) | |
| tree | 27825c83636c4de341eb09a74f49f5d38a15d165 /llvm/lib/Option/OptTable.cpp | |
| parent | e3b557809604d036af6e00c60f012c2025b59a5e (diff) | |
Diffstat (limited to 'llvm/lib/Option/OptTable.cpp')
| -rw-r--r-- | llvm/lib/Option/OptTable.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Option/OptTable.cpp b/llvm/lib/Option/OptTable.cpp index 2e289c58b45a..3f53ac119c69 100644 --- a/llvm/lib/Option/OptTable.cpp +++ b/llvm/lib/Option/OptTable.cpp @@ -163,7 +163,7 @@ static unsigned matchOption(const OptTable::Info *I, StringRef Str, for (auto Prefix : I->Prefixes) { if (Str.startswith(Prefix)) { StringRef Rest = Str.substr(Prefix.size()); - bool Matched = IgnoreCase ? Rest.startswith_insensitive(I->Name) + bool Matched = IgnoreCase ? Rest.starts_with_insensitive(I->Name) : Rest.startswith(I->Name); if (Matched) return Prefix.size() + StringRef(I->Name).size(); @@ -468,6 +468,16 @@ InputArgList OptTable::ParseArgs(ArrayRef<const char *> ArgArr, continue; } + // In DashDashParsing mode, the first "--" stops option scanning and treats + // all subsequent arguments as positional. + if (DashDashParsing && Str == "--") { + while (++Index < End) { + Args.append(new Arg(getOption(InputOptionID), Str, Index, + Args.getArgString(Index))); + } + break; + } + unsigned Prev = Index; std::unique_ptr<Arg> A = GroupedShortOptions ? parseOneArgGrouped(Args, Index) |
