summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-02-05 17:49:31 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-02-05 17:49:31 +0000
commit9a7cfe5a3a861aaa67cf306dc52298addc2af4e8 (patch)
treef6ccc05c0ea93f2484d926c5f21ffbc6dc7316b2
parentd1dc9a0af04cc136124e81509dff1e27151e3fa0 (diff)
downloadllvm-9a7cfe5a3a861aaa67cf306dc52298addc2af4e8.tar.gz
llvm-9a7cfe5a3a861aaa67cf306dc52298addc2af4e8.tar.bz2
llvm-9a7cfe5a3a861aaa67cf306dc52298addc2af4e8.tar.xz
Revert "Fix an invalid check for duplicate option categories."
This reverts commit r200853. It was causing clang/Analysis/checker-plugins.c to crash. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200858 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Support/CommandLine.h4
-rw-r--r--lib/Support/CommandLine.cpp17
2 files changed, 5 insertions, 16 deletions
diff --git a/include/llvm/Support/CommandLine.h b/include/llvm/Support/CommandLine.h
index b29fc87360..515b0bd00f 100644
--- a/include/llvm/Support/CommandLine.h
+++ b/include/llvm/Support/CommandLine.h
@@ -149,8 +149,8 @@ private:
public:
OptionCategory(const char *const Name, const char *const Description = 0)
: Name(Name), Description(Description) { registerCategory(); }
- const char *getName() const { return Name; }
- const char *getDescription() const { return Description; }
+ const char *getName() { return Name; }
+ const char *getDescription() { return Description; }
};
// The general Option Category (used as default category).
diff --git a/lib/Support/CommandLine.cpp b/lib/Support/CommandLine.cpp
index 289bb87433..16db4d6396 100644
--- a/lib/Support/CommandLine.cpp
+++ b/lib/Support/CommandLine.cpp
@@ -125,21 +125,8 @@ static ManagedStatic<OptionCatSet> RegisteredOptionCategories;
// Initialise the general option category.
OptionCategory llvm::cl::GeneralCategory("General options");
-struct HasName {
- HasName(StringRef Name) : Name(Name) {}
- bool operator()(const OptionCategory *Category) const {
- return Name == Category->getName();
- }
- StringRef Name;
-};
-
void OptionCategory::registerCategory()
{
- assert(std::count_if(RegisteredOptionCategories->begin(),
- RegisteredOptionCategories->end(),
- HasName(getName())) == 0 &&
- "Duplicate option categories");
-
RegisteredOptionCategories->insert(this);
}
@@ -1508,7 +1495,9 @@ public:
// It shall return true if A's name should be lexographically
// ordered before B's name. It returns false otherwise.
static bool OptionCategoryCompare(OptionCategory *A, OptionCategory *B) {
- return strcmp(A->getName(), B->getName()) < 0;
+ int Length = strcmp(A->getName(), B->getName());
+ assert(Length != 0 && "Duplicate option categories");
+ return Length < 0;
}
// Make sure we inherit our base class's operator=()