Skip to content

Commit

Permalink
Revert r311552: [Bash-autocompletion] Add support for static analyzer…
Browse files Browse the repository at this point in the history
… 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
  • Loading branch information
rui314 committed Aug 23, 2017
1 parent 1e95aaa commit 6603f56
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 60 deletions.
2 changes: 0 additions & 2 deletions include/llvm/Option/OptParser.td
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ class Option<list<string> prefixes, string name, OptionKind kind> {
string HelpText = ?;
string MetaVarName = ?;
string Values = ?;
code ValuesCode = ?;
list<OptionFlag> Flags = [];
OptionGroup Group = ?;
Option Alias = ?;
Expand Down Expand Up @@ -129,7 +128,6 @@ class Group<OptionGroup group> { OptionGroup Group = group; }
class HelpText<string text> { string HelpText = text; }
class MetaVarName<string name> { string MetaVarName = name; }
class Values<string value> { string Values = value; }
class ValuesCode<code valuecode> { code ValuesCode = valuecode; }

// Predefined options.

Expand Down
15 changes: 2 additions & 13 deletions include/llvm/Option/OptTable.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ class OptTable {
};

private:
/// \brief The option information table.
std::vector<Info> OptionInfos;
/// \brief The static option information table.
ArrayRef<Info> OptionInfos;
bool IgnoreCase;

unsigned TheInputOptionID = 0;
Expand Down Expand Up @@ -143,17 +143,6 @@ class OptTable {
std::vector<std::string> 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.
///
Expand Down
25 changes: 6 additions & 19 deletions lib/Option/OptTable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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)
Expand All @@ -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 {
Expand All @@ -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.
Expand Down
26 changes: 0 additions & 26 deletions utils/TableGen/OptParserEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<UnsetInit>(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

0 comments on commit 6603f56

Please sign in to comment.