diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp')
| -rw-r--r-- | contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp | 38 | 
1 files changed, 15 insertions, 23 deletions
diff --git a/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp b/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp index 643503b00b91..a34c7fecb53b 100644 --- a/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp +++ b/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp @@ -100,14 +100,10 @@ static const StaticDiagInfoRec *GetDiagInfo(unsigned DiagID) {  #ifndef NDEBUG    static bool IsFirst = true; // So the check is only performed on first call.    if (IsFirst) { -    for (unsigned i = 1; i != StaticDiagInfoSize; ++i) { -      assert(StaticDiagInfo[i-1].DiagID != StaticDiagInfo[i].DiagID && -             "Diag ID conflict, the enums at the start of clang::diag (in " -             "DiagnosticIDs.h) probably need to be increased"); - -      assert(StaticDiagInfo[i-1] < StaticDiagInfo[i] && -             "Improperly sorted diag info"); -    } +    assert(std::is_sorted(std::begin(StaticDiagInfo), +                          std::end(StaticDiagInfo)) && +           "Diag ID conflict, the enums at the start of clang::diag (in " +           "DiagnosticIDs.h) probably need to be increased");      IsFirst = false;    }  #endif @@ -505,11 +501,6 @@ static const WarningOption OptionTable[] = {  #include "clang/Basic/DiagnosticGroups.inc"  #undef GET_DIAG_TABLE  }; -static const size_t OptionTableSize = llvm::array_lengthof(OptionTable); - -static bool WarningOptionCompare(const WarningOption &LHS, StringRef RHS) { -  return LHS.getName() < RHS; -}  /// getWarningOptionForDiag - Return the lowest-level warning option that  /// enables the specified diagnostic.  If there is no -Wfoo flag that controls @@ -553,10 +544,12 @@ static bool getDiagnosticsInGroup(diag::Flavor Flavor,  bool  DiagnosticIDs::getDiagnosticsInGroup(diag::Flavor Flavor, StringRef Group,                                       SmallVectorImpl<diag::kind> &Diags) const { -  const WarningOption *Found = std::lower_bound( -      OptionTable, OptionTable + OptionTableSize, Group, WarningOptionCompare); -  if (Found == OptionTable + OptionTableSize || -      Found->getName() != Group) +  auto Found = std::lower_bound(std::begin(OptionTable), std::end(OptionTable), +                                Group, +                                [](const WarningOption &LHS, StringRef RHS) { +                                  return LHS.getName() < RHS; +                                }); +  if (Found == std::end(OptionTable) || Found->getName() != Group)      return true; // Option not found.    return ::getDiagnosticsInGroup(Flavor, Found, Diags); @@ -573,19 +566,18 @@ StringRef DiagnosticIDs::getNearestOption(diag::Flavor Flavor,                                            StringRef Group) {    StringRef Best;    unsigned BestDistance = Group.size() + 1; // Sanity threshold. -  for (const WarningOption *i = OptionTable, *e = OptionTable + OptionTableSize; -       i != e; ++i) { +  for (const WarningOption &O : OptionTable) {      // Don't suggest ignored warning flags. -    if (!i->Members && !i->SubGroups) +    if (!O.Members && !O.SubGroups)        continue; -    unsigned Distance = i->getName().edit_distance(Group, true, BestDistance); +    unsigned Distance = O.getName().edit_distance(Group, true, BestDistance);      if (Distance > BestDistance)        continue;      // Don't suggest groups that are not of this kind.      llvm::SmallVector<diag::kind, 8> Diags; -    if (::getDiagnosticsInGroup(Flavor, i, Diags) || Diags.empty()) +    if (::getDiagnosticsInGroup(Flavor, &O, Diags) || Diags.empty())        continue;      if (Distance == BestDistance) { @@ -593,7 +585,7 @@ StringRef DiagnosticIDs::getNearestOption(diag::Flavor Flavor,        Best = "";      } else if (Distance < BestDistance) {        // This is a better match. -      Best = i->getName(); +      Best = O.getName();        BestDistance = Distance;      }    }  | 
