From 33dbcd3dd4cc5659a91c0aa13256574ecc72c960 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Tue, 5 Sep 2017 18:04:34 +0000 Subject: [PATCH] [NFC] Loop modernization in diagtool Precommit for https://reviews.llvm.org/D37390 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@312545 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/diagtool/DiagnosticNames.cpp | 10 +++++ tools/diagtool/DiagnosticNames.h | 6 ++- tools/diagtool/ListWarnings.cpp | 56 ++++++++++++-------------- tools/diagtool/ShowEnabledWarnings.cpp | 24 +++++------ tools/diagtool/TreeView.cpp | 23 ++++------- 5 files changed, 57 insertions(+), 62 deletions(-) diff --git a/tools/diagtool/DiagnosticNames.cpp b/tools/diagtool/DiagnosticNames.cpp index a08da89577..c0bc4ecf62 100644 --- a/tools/diagtool/DiagnosticNames.cpp +++ b/tools/diagtool/DiagnosticNames.cpp @@ -84,6 +84,11 @@ GroupRecord::subgroup_iterator GroupRecord::subgroup_end() const { return nullptr; } +llvm::iterator_range +GroupRecord::subgroups() const { + return llvm::make_range(subgroup_begin(), subgroup_end()); +} + GroupRecord::diagnostics_iterator GroupRecord::diagnostics_begin() const { return DiagArrays + Members; } @@ -92,6 +97,11 @@ GroupRecord::diagnostics_iterator GroupRecord::diagnostics_end() const { return nullptr; } +llvm::iterator_range +GroupRecord::diagnostics() const { + return llvm::make_range(diagnostics_begin(), diagnostics_end()); +} + llvm::ArrayRef diagtool::getDiagnosticGroups() { return llvm::makeArrayRef(OptionTable); } diff --git a/tools/diagtool/DiagnosticNames.h b/tools/diagtool/DiagnosticNames.h index ac1a098579..598ae6a0ba 100644 --- a/tools/diagtool/DiagnosticNames.h +++ b/tools/diagtool/DiagnosticNames.h @@ -20,7 +20,7 @@ namespace diagtool { const char *NameStr; short DiagID; uint8_t NameLen; - + llvm::StringRef getName() const { return llvm::StringRef(NameStr, NameLen); } @@ -80,7 +80,7 @@ namespace diagtool { bool operator==(group_iterator &Other) const { return CurrentID == Other.CurrentID; } - + bool operator!=(group_iterator &Other) const { return CurrentID != Other.CurrentID; } @@ -89,10 +89,12 @@ namespace diagtool { typedef group_iterator subgroup_iterator; subgroup_iterator subgroup_begin() const; subgroup_iterator subgroup_end() const; + llvm::iterator_range subgroups() const; typedef group_iterator diagnostics_iterator; diagnostics_iterator diagnostics_begin() const; diagnostics_iterator diagnostics_end() const; + llvm::iterator_range diagnostics() const; bool operator<(llvm::StringRef Other) const { return getName() < Other; diff --git a/tools/diagtool/ListWarnings.cpp b/tools/diagtool/ListWarnings.cpp index 3e6e88306e..8bf9df9401 100644 --- a/tools/diagtool/ListWarnings.cpp +++ b/tools/diagtool/ListWarnings.cpp @@ -23,7 +23,7 @@ DEF_DIAGTOOL("list-warnings", "List warnings and their corresponding flags", ListWarnings) - + using namespace clang; using namespace diagtool; @@ -31,20 +31,19 @@ namespace { struct Entry { llvm::StringRef DiagName; llvm::StringRef Flag; - + Entry(llvm::StringRef diagN, llvm::StringRef flag) : DiagName(diagN), Flag(flag) {} - + bool operator<(const Entry &x) const { return DiagName < x.DiagName; } }; } static void printEntries(std::vector &entries, llvm::raw_ostream &out) { - for (std::vector::iterator it = entries.begin(), ei = entries.end(); - it != ei; ++it) { - out << " " << it->DiagName; - if (!it->Flag.empty()) - out << " [-W" << it->Flag << "]"; + for (const Entry &E : entries) { + out << " " << E.DiagName; + if (!E.Flag.empty()) + out << " [-W" << E.Flag << "]"; out << '\n'; } } @@ -52,23 +51,18 @@ static void printEntries(std::vector &entries, llvm::raw_ostream &out) { int ListWarnings::run(unsigned int argc, char **argv, llvm::raw_ostream &out) { std::vector Flagged, Unflagged; llvm::StringMap > flagHistogram; - - ArrayRef AllDiagnostics = getBuiltinDiagnosticsByName(); - - for (ArrayRef::iterator di = AllDiagnostics.begin(), - de = AllDiagnostics.end(); - di != de; ++di) { - unsigned diagID = di->DiagID; - + + for (const DiagnosticRecord &DR : getBuiltinDiagnosticsByName()) { + const unsigned diagID = DR.DiagID; + if (DiagnosticIDs::isBuiltinNote(diagID)) continue; - + if (!DiagnosticIDs::isBuiltinWarningOrExtension(diagID)) continue; - - Entry entry(di->getName(), - DiagnosticIDs::getWarningOptionForDiag(diagID)); - + + Entry entry(DR.getName(), DiagnosticIDs::getWarningOptionForDiag(diagID)); + if (entry.Flag.empty()) Unflagged.push_back(entry); else { @@ -76,24 +70,24 @@ int ListWarnings::run(unsigned int argc, char **argv, llvm::raw_ostream &out) { flagHistogram[entry.Flag].push_back(diagID); } } - + out << "Warnings with flags (" << Flagged.size() << "):\n"; printEntries(Flagged, out); - + out << "Warnings without flags (" << Unflagged.size() << "):\n"; printEntries(Unflagged, out); out << "\nSTATISTICS:\n\n"; - double percentFlagged = ((double) Flagged.size()) - / (Flagged.size() + Unflagged.size()) * 100.0; - - out << " Percentage of warnings with flags: " - << llvm::format("%.4g",percentFlagged) << "%\n"; - + double percentFlagged = + ((double)Flagged.size()) / (Flagged.size() + Unflagged.size()) * 100.0; + + out << " Percentage of warnings with flags: " + << llvm::format("%.4g", percentFlagged) << "%\n"; + out << " Number of unique flags: " << flagHistogram.size() << '\n'; - + double avgDiagsPerFlag = (double) Flagged.size() / flagHistogram.size(); out << " Average number of diagnostics per flag: " << llvm::format("%.4g", avgDiagsPerFlag) << '\n'; @@ -102,7 +96,7 @@ int ListWarnings::run(unsigned int argc, char **argv, llvm::raw_ostream &out) { << flagHistogram["pedantic"].size() << '\n'; out << '\n'; - + return 0; } diff --git a/tools/diagtool/ShowEnabledWarnings.cpp b/tools/diagtool/ShowEnabledWarnings.cpp index e6ea786a9a..513abc15b2 100644 --- a/tools/diagtool/ShowEnabledWarnings.cpp +++ b/tools/diagtool/ShowEnabledWarnings.cpp @@ -112,17 +112,14 @@ int ShowEnabledWarnings::run(unsigned int argc, char **argv, raw_ostream &Out) { // which ones are turned on. // FIXME: It would be very nice to print which flags are turning on which // diagnostics, but this can be done with a diff. - ArrayRef AllDiagnostics = getBuiltinDiagnosticsByName(); std::vector Active; - for (ArrayRef::iterator I = AllDiagnostics.begin(), - E = AllDiagnostics.end(); - I != E; ++I) { - unsigned DiagID = I->DiagID; - + for (const DiagnosticRecord &DR : getBuiltinDiagnosticsByName()) { + unsigned DiagID = DR.DiagID; + if (DiagnosticIDs::isBuiltinNote(DiagID)) continue; - + if (!DiagnosticIDs::isBuiltinWarningOrExtension(DiagID)) continue; @@ -132,17 +129,16 @@ int ShowEnabledWarnings::run(unsigned int argc, char **argv, raw_ostream &Out) { continue; StringRef WarningOpt = DiagnosticIDs::getWarningOptionForDiag(DiagID); - Active.push_back(PrettyDiag(I->getName(), WarningOpt, DiagLevel)); + Active.push_back(PrettyDiag(DR.getName(), WarningOpt, DiagLevel)); } // Print them all out. - for (std::vector::const_iterator I = Active.begin(), - E = Active.end(); I != E; ++I) { + for (const PrettyDiag &PD : Active) { if (ShouldShowLevels) - Out << getCharForLevel(I->Level) << " "; - Out << I->Name; - if (!I->Flag.empty()) - Out << " [-W" << I->Flag << "]"; + Out << getCharForLevel(PD.Level) << " "; + Out << PD.Name; + if (!PD.Flag.empty()) + Out << " [-W" << PD.Flag << "]"; Out << '\n'; } diff --git a/tools/diagtool/TreeView.cpp b/tools/diagtool/TreeView.cpp index 07af944ffc..d1f3d3e652 100644 --- a/tools/diagtool/TreeView.cpp +++ b/tools/diagtool/TreeView.cpp @@ -62,20 +62,16 @@ public: resetColor(); ++Indent; - for (GroupRecord::subgroup_iterator I = Group.subgroup_begin(), - E = Group.subgroup_end(); - I != E; ++I) { - printGroup(*I, Indent); + for (const GroupRecord &GR : Group.subgroups()) { + printGroup(GR, Indent); } if (!FlagsOnly) { - for (GroupRecord::diagnostics_iterator I = Group.diagnostics_begin(), - E = Group.diagnostics_end(); - I != E; ++I) { - if (ShowColors && !isIgnored(I->DiagID)) + for (const DiagnosticRecord &DR : Group.diagnostics()) { + if (ShowColors && !isIgnored(DR.DiagID)) setColor(llvm::raw_ostream::GREEN); out.indent(Indent * 2); - out << I->getName(); + out << DR.getName(); resetColor(); out << "\n"; } @@ -107,12 +103,9 @@ public: ArrayRef AllGroups = getDiagnosticGroups(); llvm::DenseSet NonRootGroupIDs; - for (ArrayRef::iterator I = AllGroups.begin(), - E = AllGroups.end(); - I != E; ++I) { - for (GroupRecord::subgroup_iterator SI = I->subgroup_begin(), - SE = I->subgroup_end(); - SI != SE; ++SI) { + for (const GroupRecord &GR : AllGroups) { + for (auto SI = GR.subgroup_begin(), SE = GR.subgroup_end(); SI != SE; + ++SI) { NonRootGroupIDs.insert((unsigned)SI.getID()); } } -- 2.40.0