From 9a7cfe5a3a861aaa67cf306dc52298addc2af4e8 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 5 Feb 2014 17:49:31 +0000 Subject: [PATCH] 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 --- include/llvm/Support/CommandLine.h | 4 ++-- lib/Support/CommandLine.cpp | 17 +++-------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/include/llvm/Support/CommandLine.h b/include/llvm/Support/CommandLine.h index b29fc873603..515b0bd00f9 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 289bb87433f..16db4d63960 100644 --- a/lib/Support/CommandLine.cpp +++ b/lib/Support/CommandLine.cpp @@ -125,21 +125,8 @@ static ManagedStatic 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=() -- 2.11.0