Index: utils/TableGen/ClangASTNodesEmitter.cpp =================================================================== --- utils/TableGen/ClangASTNodesEmitter.cpp +++ utils/TableGen/ClangASTNodesEmitter.cpp @@ -157,9 +157,7 @@ ChildMap Tree; - for (unsigned i = 0, e = Stmts.size(); i != e; ++i) { - Record *R = Stmts[i]; - + for (const auto &R : Stmts) { if (R->getValue("Base")) Tree.insert(std::make_pair(R->getValueAsDef("Base"), R)); else @@ -202,10 +200,8 @@ = Records.getAllDerivedDefinitions("DeclContext"); RecordVector Decls = Records.getAllDerivedDefinitions("Decl"); RecordSet DeclContexts (DeclContextsVector.begin(), DeclContextsVector.end()); - - for (RecordVector::iterator i = Decls.begin(), e = Decls.end(); i != e; ++i) { - Record *R = *i; + for (const auto *R : Decls) { if (R->getValue("Base")) { Record *B = R->getValueAsDef("Base"); if (DeclContexts.find(B) != DeclContexts.end()) { @@ -217,11 +213,9 @@ // To keep identical order, RecordVector may be used // instead of RecordSet. - for (RecordVector::iterator - i = DeclContextsVector.begin(), e = DeclContextsVector.end(); - i != e; ++i) - if (DeclContexts.find(*i) != DeclContexts.end()) - OS << "DECL_CONTEXT(" << (*i)->getName() << ")\n"; + for (const auto &DC : DeclContextsVector) + if (DeclContexts.find(DC) != DeclContexts.end()) + OS << "DECL_CONTEXT(" << DC->getName() << ")\n"; OS << "#undef DECL_CONTEXT\n"; OS << "#undef DECL_CONTEXT_BASE\n"; Index: utils/TableGen/ClangAttrEmitter.cpp =================================================================== --- utils/TableGen/ClangAttrEmitter.cpp +++ utils/TableGen/ClangAttrEmitter.cpp @@ -726,7 +726,7 @@ for (size_t I = 0; I < enums.size(); ++I) { if (Uniques.insert(enums[I]).second) OS << " case " << getAttrName() << "Attr::" << enums[I] - << ": return \"" << values[I] << "\";\n"; + << ": return \"" << values[I] << "\";\n"; } OS << " }\n" << " llvm_unreachable(\"No enumerator with that value\");\n" @@ -1895,17 +1895,15 @@ GenerateHasAttrSpellingStringSwitch(Pragma, OS, "Pragma"); OS << "case AttrSyntax::CXX: {\n"; // C++11-style attributes are further split out based on the Scope. - for (std::map>::iterator I = CXX.begin(), - E = CXX.end(); - I != E; ++I) { - if (I != CXX.begin()) + for (const auto &I : CXX) { + if (I != *CXX.begin()) OS << " else "; - if (I->first.empty()) + if (I.first.empty()) OS << "if (!Scope || Scope->getName() == \"\") {\n"; else - OS << "if (Scope->getName() == \"" << I->first << "\") {\n"; + OS << "if (Scope->getName() == \"" << I.first << "\") {\n"; OS << " return llvm::StringSwitch(Name)\n"; - GenerateHasAttrSpellingStringSwitch(I->second, OS, "CXX11", I->first); + GenerateHasAttrSpellingStringSwitch(I.second, OS, "CXX11", I.first); OS << "}"; } OS << "\n}\n"; Index: utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp =================================================================== --- utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp +++ utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp @@ -52,15 +52,13 @@ std::vector Tags = Records.getAllDerivedDefinitions("NCR"); std::vector NameToUTF8; SmallString<32> CLiteral; - for (std::vector::iterator I = Tags.begin(), E = Tags.end(); - I != E; ++I) { - Record &Tag = **I; - std::string Spelling = Tag.getValueAsString("Spelling"); - uint64_t CodePoint = Tag.getValueAsInt("CodePoint"); + for (const auto *Tag : Tags) { + std::string Spelling = Tag->getValueAsString("Spelling"); + uint64_t CodePoint = Tag->getValueAsInt("CodePoint"); CLiteral.clear(); CLiteral.append("return "); if (!translateCodePointToUTF8(CodePoint, CLiteral)) { - SrcMgr.PrintMessage(Tag.getLoc().front(), + SrcMgr.PrintMessage(Tag->getLoc().front(), SourceMgr::DK_Error, Twine("invalid code point")); continue; Index: utils/TableGen/ClangDiagnosticsEmitter.cpp =================================================================== --- utils/TableGen/ClangDiagnosticsEmitter.cpp +++ utils/TableGen/ClangDiagnosticsEmitter.cpp @@ -45,11 +45,11 @@ DiagGroupParentMap(RecordKeeper &records) : Records(records) { std::vector DiagGroups = Records.getAllDerivedDefinitions("DiagGroup"); - for (unsigned i = 0, e = DiagGroups.size(); i != e; ++i) { + for (const auto &DG : DiagGroups) { std::vector SubGroups = - DiagGroups[i]->getValueAsListOfDefs("SubGroups"); - for (unsigned j = 0, e = SubGroups.size(); j != e; ++j) - Mapping[SubGroups[j]].push_back(DiagGroups[i]); + DG->getValueAsListOfDefs("SubGroups"); + for (const auto &SG : SubGroups) + Mapping[SG].push_back(DG); } } @@ -69,8 +69,8 @@ // The diag group may the subgroup of one or more other diagnostic groups, // check these for a category as well. const std::vector &Parents = DiagGroupParents.getParents(Group); - for (unsigned i = 0, e = Parents.size(); i != e; ++i) { - CatName = getCategoryFromDiagGroup(Parents[i], DiagGroupParents); + for (const auto &Parent : Parents) { + CatName = getCategoryFromDiagGroup(Parent, DiagGroupParents); if (!CatName.empty()) return CatName; } return ""; @@ -107,8 +107,8 @@ std::vector Diags = Records.getAllDerivedDefinitions("Diagnostic"); - for (unsigned i = 0, e = Diags.size(); i != e; ++i) { - std::string Category = getDiagnosticCategory(Diags[i], ParentInfo); + for (const auto &D : Diags) { + std::string Category = getDiagnosticCategory(D, ParentInfo); if (Category.empty()) continue; // Skip diags with no category. unsigned &ID = CategoryIDs[Category]; @@ -167,8 +167,7 @@ const std::vector &DiagGroups, std::map &DiagsInGroup) { - for (unsigned i = 0, e = Diags.size(); i != e; ++i) { - const Record *R = Diags[i]; + for (const auto &R : Diags) { DefInit *DI = dyn_cast(R->getValueInit("Group")); if (!DI) continue; @@ -183,8 +182,7 @@ // Add all DiagGroup's to the DiagsInGroup list to make sure we pick up empty // groups (these are warnings that GCC supports that clang never produces). - for (unsigned i = 0, e = DiagGroups.size(); i != e; ++i) { - Record *Group = DiagGroups[i]; + for (const auto &Group : DiagGroups) { GroupInfo &GI = DiagsInGroup[Group->getValueAsString("GroupName")]; if (Group->isAnonymous()) { if (GI.DiagsInGroup.size() > 1) @@ -197,48 +195,41 @@ } std::vector SubGroups = Group->getValueAsListOfDefs("SubGroups"); - for (unsigned j = 0, e = SubGroups.size(); j != e; ++j) - GI.SubGroups.push_back(SubGroups[j]->getValueAsString("GroupName")); + for (const auto &SG : SubGroups) + GI.SubGroups.push_back(SG->getValueAsString("GroupName")); } // Assign unique ID numbers to the groups. unsigned IDNo = 0; - for (std::map::iterator - I = DiagsInGroup.begin(), E = DiagsInGroup.end(); I != E; ++I, ++IDNo) - I->second.IDNo = IDNo; + for (auto &I : DiagsInGroup) + I.second.IDNo = IDNo++; // Sort the implicit groups, so we can warn about them deterministically. SmallVector SortedGroups(ImplicitGroups.begin(), ImplicitGroups.end()); - for (SmallVectorImpl::iterator I = SortedGroups.begin(), - E = SortedGroups.end(); - I != E; ++I) { - MutableArrayRef GroupDiags = (*I)->DiagsInGroup; + for (const auto &I : SortedGroups) { + MutableArrayRef GroupDiags = I->DiagsInGroup; std::sort(GroupDiags.begin(), GroupDiags.end(), beforeThanCompare); } std::sort(SortedGroups.begin(), SortedGroups.end(), beforeThanCompareGroups); // Warn about the same group being used anonymously in multiple places. - for (SmallVectorImpl::const_iterator I = SortedGroups.begin(), - E = SortedGroups.end(); - I != E; ++I) { - ArrayRef GroupDiags = (*I)->DiagsInGroup; - - if ((*I)->ExplicitDef) { - std::string Name = (*I)->ExplicitDef->getValueAsString("GroupName"); - for (ArrayRef::const_iterator DI = GroupDiags.begin(), - DE = GroupDiags.end(); - DI != DE; ++DI) { - const DefInit *GroupInit = cast((*DI)->getValueInit("Group")); + for (const auto &I : SortedGroups) { + ArrayRef GroupDiags = I->DiagsInGroup; + + if (I->ExplicitDef) { + std::string Name = I->ExplicitDef->getValueAsString("GroupName"); + for (const auto &DI : GroupDiags) { + const DefInit *GroupInit = cast(DI->getValueInit("Group")); const Record *NextDiagGroup = GroupInit->getDef(); - if (NextDiagGroup == (*I)->ExplicitDef) + if (NextDiagGroup == I->ExplicitDef) continue; - SMRange InGroupRange = findSuperClassRange(*DI, "InGroup"); + SMRange InGroupRange = findSuperClassRange(DI, "InGroup"); SmallString<64> Replacement; if (InGroupRange.isValid()) { Replacement += "InGroup<"; - Replacement += (*I)->ExplicitDef->getName(); + Replacement += I->ExplicitDef->getName(); Replacement += ">"; } SMFixIt FixIt(InGroupRange, Replacement.str()); @@ -250,7 +241,7 @@ None, InGroupRange.isValid() ? FixIt : ArrayRef()); - SrcMgr.PrintMessage((*I)->ExplicitDef->getLoc().front(), + SrcMgr.PrintMessage(I->ExplicitDef->getLoc().front(), SourceMgr::DK_Note, "group defined here"); } } else { @@ -344,8 +335,8 @@ return true; const std::vector &Parents = DiagGroupParents.getParents(Group); - for (unsigned i = 0, e = Parents.size(); i != e; ++i) - if (isSubGroupOfGroup(Parents[i], GName)) + for (const auto &Parent : Parents) + if (isSubGroupOfGroup(Parent, GName)) return true; return false; @@ -387,8 +378,8 @@ // that group, we can safely add this group to -Wpedantic. if (groupInPedantic(Group, /* increment */ true)) { const std::vector &Parents = DiagGroupParents.getParents(Group); - for (unsigned i = 0, e = Parents.size(); i != e; ++i) - markGroup(Parents[i]); + for (const auto &Parent : Parents) + markGroup(Parent); } } @@ -397,8 +388,7 @@ // All extensions that are not on by default are implicitly in the // "pedantic" group. For those that aren't explicitly included in -Wpedantic, // mark them for consideration to be included in -Wpedantic directly. - for (unsigned i = 0, e = Diags.size(); i != e; ++i) { - Record *R = Diags[i]; + for (const auto &R : Diags) { if (isExtension(R) && isOffByDefault(R)) { DiagsSet.insert(R); if (DefInit *Group = dyn_cast(R->getValueInit("Group"))) { @@ -413,8 +403,7 @@ // Compute the set of diagnostics that are directly in -Wpedantic. We // march through Diags a second time to ensure the results are emitted // in deterministic order. - for (unsigned i = 0, e = Diags.size(); i != e; ++i) { - Record *R = Diags[i]; + for (const auto &R : Diags) { if (!DiagsSet.count(R)) continue; // Check if the group is implicitly in -Wpedantic. If so, @@ -439,15 +428,14 @@ // Compute the set of groups that are directly in -Wpedantic. We // march through the groups to ensure the results are emitted /// in a deterministc order. - for (unsigned i = 0, ei = DiagGroups.size(); i != ei; ++i) { - Record *Group = DiagGroups[i]; + for (const auto &Group : DiagGroups) { if (!groupInPedantic(Group)) continue; unsigned ParentsInPedantic = 0; const std::vector &Parents = DiagGroupParents.getParents(Group); - for (unsigned j = 0, ej = Parents.size(); j != ej; ++j) { - if (groupInPedantic(Parents[j])) + for (const auto &Parent : Parents) { + if (groupInPedantic(Parent)) ++ParentsInPedantic; } // If all the parents are in -Wpedantic, this means that this diagnostic @@ -511,49 +499,47 @@ InferPedantic inferPedantic(DGParentMap, Diags, DiagGroups, DiagsInGroup); inferPedantic.compute(&DiagsInPedantic, (RecordVec*)nullptr); - for (unsigned i = 0, e = Diags.size(); i != e; ++i) { - const Record &R = *Diags[i]; - + for (const auto &R : Diags) { // Check if this is an error that is accidentally in a warning // group. - if (isError(R)) { - if (DefInit *Group = dyn_cast(R.getValueInit("Group"))) { + if (isError(*R)) { + if (DefInit *Group = dyn_cast(R->getValueInit("Group"))) { const Record *GroupRec = Group->getDef(); const std::string &GroupName = GroupRec->getValueAsString("GroupName"); - PrintFatalError(R.getLoc(), "Error " + R.getName() + + PrintFatalError(R->getLoc(), "Error " + R->getName() + " cannot be in a warning group [" + GroupName + "]"); } } // Check that all remarks have an associated diagnostic group. - if (isRemark(R)) { - if (!isa(R.getValueInit("Group"))) { - PrintFatalError(R.getLoc(), "Error " + R.getName() + + if (isRemark(*R)) { + if (!isa(R->getValueInit("Group"))) { + PrintFatalError(R->getLoc(), "Error " + R->getName() + " not in any diagnostic group"); } } // Filter by component. - if (!Component.empty() && Component != R.getValueAsString("Component")) + if (!Component.empty() && Component != R->getValueAsString("Component")) continue; - OS << "DIAG(" << R.getName() << ", "; - OS << R.getValueAsDef("Class")->getName(); + OS << "DIAG(" << R->getName() << ", "; + OS << R->getValueAsDef("Class")->getName(); OS << ", (unsigned)diag::Severity::" - << R.getValueAsDef("DefaultSeverity")->getValueAsString("Name"); + << R->getValueAsDef("DefaultSeverity")->getValueAsString("Name"); // Description string. OS << ", \""; - OS.write_escaped(R.getValueAsString("Text")) << '"'; + OS.write_escaped(R->getValueAsString("Text")) << '"'; // Warning associated with the diagnostic. This is stored as an index into // the alphabetically sorted warning table. - if (DefInit *DI = dyn_cast(R.getValueInit("Group"))) { + if (DefInit *DI = dyn_cast(R->getValueInit("Group"))) { std::map::iterator I = DiagsInGroup.find(DI->getDef()->getValueAsString("GroupName")); assert(I != DiagsInGroup.end()); OS << ", " << I->second.IDNo; - } else if (DiagsInPedantic.count(&R)) { + } else if (DiagsInPedantic.count(R)) { std::map::iterator I = DiagsInGroup.find("pedantic"); assert(I != DiagsInGroup.end() && "pedantic group not defined"); @@ -563,21 +549,21 @@ } // SFINAE response. - OS << ", " << R.getValueAsDef("SFINAE")->getName(); + OS << ", " << R->getValueAsDef("SFINAE")->getName(); // Default warning has no Werror bit. - if (R.getValueAsBit("WarningNoWerror")) + if (R->getValueAsBit("WarningNoWerror")) OS << ", true"; else OS << ", false"; - if (R.getValueAsBit("ShowInSystemHeader")) + if (R->getValueAsBit("ShowInSystemHeader")) OS << ", true"; else OS << ", false"; // Category number. - OS << ", " << CategoryIDs.getID(getDiagnosticCategory(&R, DGParentMap)); + OS << ", " << CategoryIDs.getID(getDiagnosticCategory(R, DGParentMap)); OS << ")\n"; } } @@ -591,8 +577,8 @@ if (name.empty()) return "DiagCat_None"; SmallString<256> enumName = llvm::StringRef("DiagCat_"); - for (llvm::StringRef::iterator I = name.begin(), E = name.end(); I != E; ++I) - enumName += isalnum(*I) ? *I : '_'; + for (const auto &I : name) + enumName += isalnum(I) ? I : '_'; return enumName.str(); } @@ -843,12 +829,9 @@ inferPedantic.compute(&DiagsInPedantic, &GroupsInPedantic); StringToOffsetTable GroupNames; - for (std::map::const_iterator - I = DiagsInGroup.begin(), - E = DiagsInGroup.end(); - I != E; ++I) { + for (const auto &I : DiagsInGroup) { // Store a pascal-style length byte at the beginning of the string. - std::string Name = char(I->first.size()) + I->first; + std::string Name = char(I.first.size()) + I.first; GroupNames.GetOrAddStringOffset(Name, false); } @@ -882,18 +865,15 @@ std::vector Index; Index.reserve(Diags.size()); - for (unsigned i = 0, e = Diags.size(); i != e; ++i) { - const Record &R = *(Diags[i]); - Index.push_back(RecordIndexElement(R)); + for (const auto &R : Diags) { + Index.push_back(RecordIndexElement(*R)); } std::sort(Index.begin(), Index.end(), [](const RecordIndexElement &Lhs, const RecordIndexElement &Rhs) { return Lhs.Name < Rhs.Name; }); - for (unsigned i = 0, e = Index.size(); i != e; ++i) { - const RecordIndexElement &R = Index[i]; - + for (const auto &R : Index) { OS << "DIAG_NAME_INDEX(" << R.Name << ")\n"; } } Index: utils/TableGen/ClangSACheckersEmitter.cpp =================================================================== --- utils/TableGen/ClangSACheckersEmitter.cpp +++ utils/TableGen/ClangSACheckersEmitter.cpp @@ -83,14 +83,12 @@ static void addPackageToCheckerGroup(const Record *package, const Record *group, llvm::DenseMap &recordGroupMap) { llvm::DenseSet &checkers = recordGroupMap[package]->Checkers; - for (llvm::DenseSet::iterator - I = checkers.begin(), E = checkers.end(); I != E; ++I) - recordGroupMap[group]->Checkers.insert(*I); + for (const auto &I : checkers) + recordGroupMap[group]->Checkers.insert(I); llvm::DenseSet &subGroups = recordGroupMap[package]->SubGroups; - for (llvm::DenseSet::iterator - I = subGroups.begin(), E = subGroups.end(); I != E; ++I) - addPackageToCheckerGroup(*I, group, recordGroupMap); + for (const auto &I : subGroups) + addPackageToCheckerGroup(I, group, recordGroupMap); } namespace clang { @@ -106,8 +104,7 @@ llvm::DenseMap recordGroupMap; std::vector packages = Records.getAllDerivedDefinitions("Package"); - for (unsigned i = 0, e = packages.size(); i != e; ++i) { - Record *R = packages[i]; + for (const auto &R : packages) { std::string fullName = getPackageFullName(R); if (!fullName.empty()) { GroupInfo &info = groupInfoByName[fullName]; @@ -118,8 +115,7 @@ std::vector checkerGroups = Records.getAllDerivedDefinitions("CheckerGroup"); - for (unsigned i = 0, e = checkerGroups.size(); i != e; ++i) { - Record *R = checkerGroups[i]; + for (const auto &R : checkerGroups) { std::string name = R->getValueAsString("GroupName"); if (!name.empty()) { GroupInfo &info = groupInfoByName[name]; @@ -127,8 +123,7 @@ } } - for (unsigned i = 0, e = checkers.size(); i != e; ++i) { - Record *R = checkers[i]; + for (const auto &R : checkers) { Record *package = nullptr; if (DefInit * DI = dyn_cast(R->getValueInit("ParentPackage"))) @@ -164,9 +159,9 @@ // If a package is in group, add all its checkers and its sub-packages // checkers into the group. - for (unsigned i = 0, e = packages.size(); i != e; ++i) - if (DefInit *DI = dyn_cast(packages[i]->getValueInit("Group"))) - addPackageToCheckerGroup(packages[i], DI->getDef(), recordGroupMap); + for (const auto &package : packages) + if (DefInit *DI = dyn_cast(package->getValueInit("Group"))) + addPackageToCheckerGroup(package, DI->getDef(), recordGroupMap); typedef std::map SortedRecords; typedef llvm::DenseMap RecToSortIndex; @@ -175,14 +170,13 @@ RecToSortIndex groupToSortIndex; OS << "\n#ifdef GET_GROUPS\n"; { - for (unsigned i = 0, e = checkerGroups.size(); i != e; ++i) - sortedGroups[checkerGroups[i]->getValueAsString("GroupName")] - = checkerGroups[i]; + for (const auto &checkerGroup : checkerGroups) + sortedGroups[checkerGroup->getValueAsString("GroupName")] + = checkerGroup; unsigned sortIndex = 0; - for (SortedRecords::iterator - I = sortedGroups.begin(), E = sortedGroups.end(); I != E; ++I) { - const Record *R = I->second; + for (const auto &I : sortedGroups) { + const Record *R = I.second; OS << "GROUP(" << "\""; OS.write_escaped(R->getValueAsString("GroupName")) << "\""; @@ -196,12 +190,11 @@ OS << "\n#ifdef GET_PACKAGES\n"; { SortedRecords sortedPackages; - for (unsigned i = 0, e = packages.size(); i != e; ++i) - sortedPackages[getPackageFullName(packages[i])] = packages[i]; + for (const auto &package : packages) + sortedPackages[getPackageFullName(package)] = package; - for (SortedRecords::iterator - I = sortedPackages.begin(), E = sortedPackages.end(); I != E; ++I) { - const Record &R = *I->second; + for (const auto &I : sortedPackages) { + const Record &R = *I.second; OS << "PACKAGE(" << "\""; OS.write_escaped(getPackageFullName(&R)) << "\", "; @@ -221,25 +214,23 @@ OS << "#endif // GET_PACKAGES\n\n"; OS << "\n#ifdef GET_CHECKERS\n"; - for (unsigned i = 0, e = checkers.size(); i != e; ++i) { - const Record &R = *checkers[i]; - + for (const auto &R : checkers) { OS << "CHECKER(" << "\""; std::string name; - if (isCheckerNamed(&R)) - name = getCheckerFullName(&R); + if (isCheckerNamed(R)) + name = getCheckerFullName(R); OS.write_escaped(name) << "\", "; - OS << R.getName() << ", "; - OS << getStringValue(R, "DescFile") << ", "; + OS << R->getName() << ", "; + OS << getStringValue(*R, "DescFile") << ", "; OS << "\""; - OS.write_escaped(getStringValue(R, "HelpText")) << "\", "; + OS.write_escaped(getStringValue(*R, "HelpText")) << "\", "; // Group index - if (DefInit *DI = dyn_cast(R.getValueInit("Group"))) + if (DefInit *DI = dyn_cast(R->getValueInit("Group"))) OS << groupToSortIndex[DI->getDef()] << ", "; else OS << "-1, "; // Hidden bit - if (isHidden(R)) + if (isHidden(*R)) OS << "true"; else OS << "false"; @@ -248,46 +239,40 @@ OS << "#endif // GET_CHECKERS\n\n"; unsigned index = 0; - for (std::map::iterator - I = groupInfoByName.begin(), E = groupInfoByName.end(); I != E; ++I) - I->second.Index = index++; + for (auto &I : groupInfoByName) + I.second.Index = index++; // Walk through the packages/groups/checkers emitting an array for each // set of checkers and an array for each set of subpackages. OS << "\n#ifdef GET_MEMBER_ARRAYS\n"; unsigned maxLen = 0; - for (std::map::iterator - I = groupInfoByName.begin(), E = groupInfoByName.end(); I != E; ++I) { - maxLen = std::max(maxLen, (unsigned)I->first.size()); + for (auto &I : groupInfoByName) { + maxLen = std::max(maxLen, (unsigned)I.first.size()); - llvm::DenseSet &checkers = I->second.Checkers; + llvm::DenseSet &checkers = I.second.Checkers; if (!checkers.empty()) { - OS << "static const short CheckerArray" << I->second.Index << "[] = { "; + OS << "static const short CheckerArray" << I.second.Index << "[] = { "; // Make the output order deterministic. std::map sorted; - for (llvm::DenseSet::iterator - I = checkers.begin(), E = checkers.end(); I != E; ++I) - sorted[(*I)->getID()] = *I; + for (const auto &I : checkers) + sorted[I->getID()] = I; - for (std::map::iterator - I = sorted.begin(), E = sorted.end(); I != E; ++I) - OS << checkerRecIndexMap[I->second] << ", "; + for (const auto &I : sorted) + OS << checkerRecIndexMap[I.second] << ", "; OS << "-1 };\n"; } - llvm::DenseSet &subGroups = I->second.SubGroups; + llvm::DenseSet &subGroups = I.second.SubGroups; if (!subGroups.empty()) { - OS << "static const short SubPackageArray" << I->second.Index << "[] = { "; + OS << "static const short SubPackageArray" << I.second.Index << "[] = { "; // Make the output order deterministic. std::map sorted; - for (llvm::DenseSet::iterator - I = subGroups.begin(), E = subGroups.end(); I != E; ++I) - sorted[(*I)->getID()] = *I; + for (const auto &I : subGroups) + sorted[I->getID()] = I; - for (std::map::iterator - I = sorted.begin(), E = sorted.end(); I != E; ++I) { - OS << recordGroupMap[I->second]->Index << ", "; + for (const auto &I : sorted) { + OS << recordGroupMap[I.second]->Index << ", "; } OS << "-1 };\n"; } @@ -295,25 +280,24 @@ OS << "#endif // GET_MEMBER_ARRAYS\n\n"; OS << "\n#ifdef GET_CHECKNAME_TABLE\n"; - for (std::map::iterator - I = groupInfoByName.begin(), E = groupInfoByName.end(); I != E; ++I) { + for (const auto &I : groupInfoByName) { // Group option string. OS << " { \""; - OS.write_escaped(I->first) << "\"," - << std::string(maxLen-I->first.size()+1, ' '); + OS.write_escaped(I.first) << "\"," + << std::string(maxLen-I.first.size()+1, ' '); - if (I->second.Checkers.empty()) + if (I.second.Checkers.empty()) OS << "0, "; else - OS << "CheckerArray" << I->second.Index << ", "; + OS << "CheckerArray" << I.second.Index << ", "; // Subgroups. - if (I->second.SubGroups.empty()) + if (I.second.SubGroups.empty()) OS << "0, "; else - OS << "SubPackageArray" << I->second.Index << ", "; + OS << "SubPackageArray" << I.second.Index << ", "; - OS << (I->second.Hidden ? "true" : "false"); + OS << (I.second.Hidden ? "true" : "false"); OS << " },\n"; }