From: Rui Ueyama Date: Wed, 23 Aug 2017 14:48:58 +0000 (+0000) Subject: Revert r311552: [Bash-autocompletion] Add support for static analyzer flags X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6603f56f5fdd9b9d28b8a7ebc73484a1b4f0cf84;p=llvm Revert r311552: [Bash-autocompletion] Add support for static analyzer flags This reverts commit r311552 because it broke ubsan and asan bots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311557 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Option/OptParser.td b/include/llvm/Option/OptParser.td index 9c373741770..48122369871 100644 --- a/include/llvm/Option/OptParser.td +++ b/include/llvm/Option/OptParser.td @@ -93,7 +93,6 @@ class Option prefixes, string name, OptionKind kind> { string HelpText = ?; string MetaVarName = ?; string Values = ?; - code ValuesCode = ?; list Flags = []; OptionGroup Group = ?; Option Alias = ?; @@ -129,7 +128,6 @@ class Group { OptionGroup Group = group; } class HelpText { string HelpText = text; } class MetaVarName { string MetaVarName = name; } class Values { string Values = value; } -class ValuesCode { code ValuesCode = valuecode; } // Predefined options. diff --git a/include/llvm/Option/OptTable.h b/include/llvm/Option/OptTable.h index 57a6954f487..6acece96703 100644 --- a/include/llvm/Option/OptTable.h +++ b/include/llvm/Option/OptTable.h @@ -57,8 +57,8 @@ public: }; private: - /// \brief The option information table. - std::vector OptionInfos; + /// \brief The static option information table. + ArrayRef OptionInfos; bool IgnoreCase; unsigned TheInputOptionID = 0; @@ -143,17 +143,6 @@ public: std::vector findByPrefix(StringRef Cur, unsigned short DisableFlags) const; - /// Add Values to Option's Values class - /// - /// \param [in] Option - Prefix + Name of the flag which Values will be - /// changed. For example, "-analyzer-checker". - /// \param [in] Values - String of Values seperated by ",", such as - /// "foo, bar..", where foo and bar is the argument which the Option flag - /// takes - /// - /// \return true in success, and false in fail. - bool addValues(const char *Option, const char *Values); - /// \brief Parse a single argument; returning the new argument and /// updating Index. /// diff --git a/lib/Option/OptTable.cpp b/lib/Option/OptTable.cpp index d4486c6e8fd..7910bea0dcc 100644 --- a/lib/Option/OptTable.cpp +++ b/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 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 Candidates; @@ -229,8 +228,7 @@ OptTable::suggestValueCompletions(StringRef Option, StringRef Arg) const { std::vector OptTable::findByPrefix(StringRef Cur, unsigned short DisableFlags) const { std::vector 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. diff --git a/utils/TableGen/OptParserEmitter.cpp b/utils/TableGen/OptParserEmitter.cpp index ce0541d9794..e3777d036a2 100644 --- a/utils/TableGen/OptParserEmitter.cpp +++ b/utils/TableGen/OptParserEmitter.cpp @@ -298,31 +298,5 @@ void EmitOptParser(RecordKeeper &Records, raw_ostream &OS) { OS << ")\n"; } OS << "#endif // OPTION\n"; - - OS << "\n"; - OS << "#ifdef OPTTABLE_ARG_INIT\n"; - OS << "//////////\n"; - OS << "// Option Values\n\n"; - for (unsigned I = 0, E = Opts.size(); I != E; ++I) { - const Record &R = *Opts[I]; - if (isa(R.getValueInit("ValuesCode"))) - continue; - OS << "{\n"; - OS << R.getValueAsString("ValuesCode"); - OS << "\n"; - for (const std::string &Pref : R.getValueAsListOfStrings("Prefixes")) { - OS << "bool ValuesWereAdded = "; - OS << "Opt.addValues("; - std::string S = (Pref + R.getValueAsString("Name")).str(); - write_cstring(OS, S); - OS << ", Values);\n"; - OS << "(void)ValuesWereAdded;\n"; - OS << "assert(ValuesWereAdded && \"Couldn't add values to " - "OptTable!\");\n"; - } - OS << "}\n"; - } - OS << "\n"; - OS << "#endif // OPTTABLE_ARG_INIT\n"; } } // end namespace llvm