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=()