aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Option/OptTable.cpp
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2017-08-23 14:48:58 +0000
committerRui Ueyama <ruiu@google.com>2017-08-23 14:48:58 +0000
commita93f087d3ee4f1a3a5b5acb2a09d4d23fd5d0bd8 (patch)
tree89e8a9fc5d601caf769a8363563c72882157ca3b /llvm/lib/Option/OptTable.cpp
parent2f55b958b1ad6f224a8cf65d6b640b8fbff78595 (diff)
downloadllvm-a93f087d3ee4f1a3a5b5acb2a09d4d23fd5d0bd8.zip
llvm-a93f087d3ee4f1a3a5b5acb2a09d4d23fd5d0bd8.tar.gz
llvm-a93f087d3ee4f1a3a5b5acb2a09d4d23fd5d0bd8.tar.bz2
Revert r311552: [Bash-autocompletion] Add support for static analyzer flags
This reverts commit r311552 because it broke ubsan and asan bots. llvm-svn: 311557
Diffstat (limited to 'llvm/lib/Option/OptTable.cpp')
-rw-r--r--llvm/lib/Option/OptTable.cpp25
1 files changed, 6 insertions, 19 deletions
diff --git a/llvm/lib/Option/OptTable.cpp b/llvm/lib/Option/OptTable.cpp
index d4486c6..7910bea 100644
--- a/llvm/lib/Option/OptTable.cpp
+++ b/llvm/lib/Option/OptTable.cpp
@@ -196,7 +196,7 @@ static unsigned matchOption(const OptTable::Info *I, StringRef Str,
// Returns true if one of the Prefixes + In.Names matches Option
static bool optionMatches(const OptTable::Info &In, StringRef Option) {
- if (In.Prefixes)
+ if (In.Values && In.Prefixes)
for (size_t I = 0; In.Prefixes[I]; I++)
if (Option == std::string(In.Prefixes[I]) + In.Name)
return true;
@@ -209,9 +209,8 @@ static bool optionMatches(const OptTable::Info &In, StringRef Option) {
std::vector<std::string>
OptTable::suggestValueCompletions(StringRef Option, StringRef Arg) const {
// Search all options and return possible values.
- for (size_t I = FirstSearchableIndex, E = OptionInfos.size(); I < E; I++) {
- const Info &In = OptionInfos[I];
- if (!In.Values || !optionMatches(In, Option))
+ for (const Info &In : OptionInfos.slice(FirstSearchableIndex)) {
+ if (!optionMatches(In, Option))
continue;
SmallVector<StringRef, 8> Candidates;
@@ -229,8 +228,7 @@ OptTable::suggestValueCompletions(StringRef Option, StringRef Arg) const {
std::vector<std::string>
OptTable::findByPrefix(StringRef Cur, unsigned short DisableFlags) const {
std::vector<std::string> Ret;
- for (size_t I = FirstSearchableIndex, E = OptionInfos.size(); I < E; I++) {
- const Info &In = OptionInfos[I];
+ for (const Info &In : OptionInfos.slice(FirstSearchableIndex)) {
if (!In.Prefixes || (!In.HelpText && !In.GroupID))
continue;
if (In.Flags & DisableFlags)
@@ -247,17 +245,6 @@ OptTable::findByPrefix(StringRef Cur, unsigned short DisableFlags) const {
return Ret;
}
-bool OptTable::addValues(const char *Option, const char *Values) {
- for (size_t I = FirstSearchableIndex, E = OptionInfos.size(); I < E; I++) {
- Info &In = OptionInfos[I];
- if (optionMatches(In, Option)) {
- In.Values = Values;
- return true;
- }
- }
- return false;
-}
-
Arg *OptTable::ParseOneArg(const ArgList &Args, unsigned &Index,
unsigned FlagsToInclude,
unsigned FlagsToExclude) const {
@@ -269,8 +256,8 @@ Arg *OptTable::ParseOneArg(const ArgList &Args, unsigned &Index,
if (isInput(PrefixesUnion, Str))
return new Arg(getOption(TheInputOptionID), Str, Index++, Str);
- const Info *Start = OptionInfos.data() + FirstSearchableIndex;
- const Info *End = OptionInfos.data() + OptionInfos.size();
+ const Info *Start = OptionInfos.begin() + FirstSearchableIndex;
+ const Info *End = OptionInfos.end();
StringRef Name = StringRef(Str).ltrim(PrefixChars);
// Search for the first next option which could be a prefix.