From: Aaron Ballman Date: Tue, 20 May 2014 19:47:14 +0000 (+0000) Subject: Cleaning up some range-based for loops so that the automatic type deduction is more... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4bc6889c26c1dfee402b05b383c2badbcb73fcfa;p=clang Cleaning up some range-based for loops so that the automatic type deduction is more explicit about pointers and const. Did some minor drive-by const correctness fixes and identifier updates as well. No functional changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209233 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/TableGen/ClangAttrEmitter.cpp b/utils/TableGen/ClangAttrEmitter.cpp index f4c9237a50..c40921821d 100644 --- a/utils/TableGen/ClangAttrEmitter.cpp +++ b/utils/TableGen/ClangAttrEmitter.cpp @@ -129,14 +129,14 @@ static StringRef NormalizeAttrSpelling(StringRef AttrSpelling) { return AttrSpelling; } -typedef std::vector> ParsedAttrMap; +typedef std::vector> ParsedAttrMap; static ParsedAttrMap getParsedAttrList(const RecordKeeper &Records, ParsedAttrMap *Dupes = nullptr) { std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); std::set Seen; ParsedAttrMap R; - for (auto Attr : Attrs) { + for (const auto *Attr : Attrs) { if (Attr->getValueAsBit("SemaHandler")) { std::string AN; if (Attr->isSubClassOf("TargetSpecificAttr") && @@ -167,7 +167,7 @@ namespace { bool isOpt; public: - Argument(Record &Arg, StringRef Attr) + Argument(const Record &Arg, StringRef Attr) : lowerName(Arg.getValueAsString("Name")), upperName(lowerName), attrName(Attr), isOpt(false) { if (!lowerName.empty()) { @@ -216,7 +216,7 @@ namespace { std::string type; public: - SimpleArgument(Record &Arg, StringRef Attr, std::string T) + SimpleArgument(const Record &Arg, StringRef Attr, std::string T) : Argument(Arg, Attr), type(T) {} @@ -293,7 +293,7 @@ namespace { int64_t Default; public: - DefaultSimpleArgument(Record &Arg, StringRef Attr, + DefaultSimpleArgument(const Record &Arg, StringRef Attr, std::string T, int64_t Default) : SimpleArgument(Arg, Attr, T), Default(Default) {} @@ -307,7 +307,7 @@ namespace { class StringArgument : public Argument { public: - StringArgument(Record &Arg, StringRef Attr) + StringArgument(const Record &Arg, StringRef Attr) : Argument(Arg, Attr) {} @@ -374,7 +374,7 @@ namespace { class AlignedArgument : public Argument { public: - AlignedArgument(Record &Arg, StringRef Attr) + AlignedArgument(const Record &Arg, StringRef Attr) : Argument(Arg, Attr) {} @@ -507,7 +507,7 @@ namespace { std::string Type, ArgName, ArgSizeName, RangeName; public: - VariadicArgument(Record &Arg, StringRef Attr, std::string T) + VariadicArgument(const Record &Arg, StringRef Attr, std::string T) : Argument(Arg, Attr), Type(T), ArgName(getLowerName().str() + "_"), ArgSizeName(ArgName + "Size"), RangeName(getLowerName()) {} @@ -614,7 +614,7 @@ namespace { std::string type; std::vector values, enums, uniques; public: - EnumArgument(Record &Arg, StringRef Attr) + EnumArgument(const Record &Arg, StringRef Attr) : Argument(Arg, Attr), type(Arg.getValueAsString("Type")), values(Arg.getValueAsListOfStrings("Values")), enums(Arg.getValueAsListOfStrings("Enums")), @@ -706,7 +706,7 @@ namespace { std::string type, QualifiedTypeName; std::vector values, enums, uniques; public: - VariadicEnumArgument(Record &Arg, StringRef Attr) + VariadicEnumArgument(const Record &Arg, StringRef Attr) : VariadicArgument(Arg, Attr, Arg.getValueAsString("Type")), type(Arg.getValueAsString("Type")), values(Arg.getValueAsListOfStrings("Values")), @@ -786,7 +786,7 @@ namespace { class VersionArgument : public Argument { public: - VersionArgument(Record &Arg, StringRef Attr) + VersionArgument(const Record &Arg, StringRef Attr) : Argument(Arg, Attr) {} @@ -837,7 +837,7 @@ namespace { class ExprArgument : public SimpleArgument { public: - ExprArgument(Record &Arg, StringRef Attr) + ExprArgument(const Record &Arg, StringRef Attr) : SimpleArgument(Arg, Attr, "Expr *") {} @@ -874,7 +874,7 @@ namespace { class VariadicExprArgument : public VariadicArgument { public: - VariadicExprArgument(Record &Arg, StringRef Attr) + VariadicExprArgument(const Record &Arg, StringRef Attr) : VariadicArgument(Arg, Attr, "Expr *") {} @@ -936,7 +936,7 @@ namespace { class TypeArgument : public SimpleArgument { public: - TypeArgument(Record &Arg, StringRef Attr) + TypeArgument(const Record &Arg, StringRef Attr) : SimpleArgument(Arg, Attr, "TypeSourceInfo *") {} @@ -958,8 +958,9 @@ namespace { }; } -static std::unique_ptr createArgument(Record &Arg, StringRef Attr, - Record *Search = nullptr) { +static std::unique_ptr +createArgument(const Record &Arg, StringRef Attr, + const Record *Search = nullptr) { if (!Search) Search = &Arg; @@ -998,8 +999,8 @@ static std::unique_ptr createArgument(Record &Arg, StringRef Attr, if (!Ptr) { // Search in reverse order so that the most-derived type is handled first. std::vector Bases = Search->getSuperClasses(); - for (auto i = Bases.rbegin(), e = Bases.rend(); i != e; ++i) { - Ptr = createArgument(Arg, Attr, *i).release(); + for (const auto *Base : llvm::make_range(Bases.rbegin(), Bases.rend())) { + Ptr = createArgument(Arg, Attr, Base).release(); if (Ptr) break; } @@ -1148,7 +1149,7 @@ getSpellingListIndex(const std::vector &SpellingList, static void writeAttrAccessorDefinition(const Record &R, raw_ostream &OS) { std::vector Accessors = R.getValueAsListOfDefs("Accessors"); - for (auto Accessor : Accessors) { + for (const auto *Accessor : Accessors) { std::string Name = Accessor->getValueAsString("Name"); std::vector Spellings = GetFlattenedSpellings(*Accessor); @@ -1172,9 +1173,9 @@ SpellingNamesAreCommon(const std::vector& Spellings) { assert(!Spellings.empty() && "An empty list of spellings was provided"); std::string FirstName = NormalizeNameForSpellingComparison( Spellings.front().name()); - for (auto I = std::next(Spellings.begin()), E = Spellings.end(); - I != E; ++I) { - std::string Name = NormalizeNameForSpellingComparison(I->name()); + for (const auto &Spelling : + llvm::make_range(std::next(Spellings.begin()), Spellings.end())) { + std::string Name = NormalizeNameForSpellingComparison(Spelling.name()); if (Name != FirstName) return false; } @@ -1240,7 +1241,7 @@ static void emitClangAttrLateParsedList(RecordKeeper &Records, raw_ostream &OS) OS << "#if defined(CLANG_ATTR_LATE_PARSED_LIST)\n"; std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); - for (auto Attr : Attrs) { + for (const auto *Attr : Attrs) { bool LateParsed = Attr->getValueAsBit("LateParsed"); if (LateParsed) { @@ -1262,7 +1263,7 @@ static void emitClangAttrTypeArgList(RecordKeeper &Records, raw_ostream &OS) { OS << "#if defined(CLANG_ATTR_TYPE_ARG_LIST)\n"; std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); - for (auto Attr : Attrs) { + for (const auto *Attr : Attrs) { // Determine whether the first argument is a type. std::vector Args = Attr->getValueAsListOfDefs("Args"); if (Args.empty()) @@ -1317,7 +1318,7 @@ static void emitClangAttrIdentifierArgList(RecordKeeper &Records, raw_ostream &O OS << "#if defined(CLANG_ATTR_IDENTIFIER_ARG_LIST)\n"; std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); - for (auto Attr : Attrs) { + for (const auto *Attr : Attrs) { // Determine whether the first argument is an identifier. std::vector Args = Attr->getValueAsListOfDefs("Args"); if (Args.empty() || !isIdentifierArgument(Args[0])) @@ -1345,8 +1346,8 @@ void EmitClangAttrClass(RecordKeeper &Records, raw_ostream &OS) { std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); - for (auto i : Attrs) { - const Record &R = *i; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; // FIXME: Currently, documentation is generated as-needed due to the fact // that there is no way to allow a generated project "reach into" the docs @@ -1365,8 +1366,8 @@ void EmitClangAttrClass(RecordKeeper &Records, raw_ostream &OS) { const std::vector Supers = R.getSuperClasses(); assert(!Supers.empty() && "Forgot to specify a superclass for the attr"); std::string SuperName; - for (auto I = Supers.rbegin(), E = Supers.rend(); I != E; ++I) { - const Record &R = **I; + for (const auto *Super : llvm::make_range(Supers.rbegin(), Supers.rend())) { + const Record &R = *Super; if (R.getName() != "TargetSpecificAttr" && SuperName.empty()) SuperName = R.getName(); } @@ -1377,7 +1378,7 @@ void EmitClangAttrClass(RecordKeeper &Records, raw_ostream &OS) { std::vector> Args; Args.reserve(ArgRecords.size()); - for (auto ArgRecord : ArgRecords) { + for (const auto *ArgRecord : ArgRecords) { Args.emplace_back(createArgument(*ArgRecord, R.getName())); Args.back()->writeDeclarations(OS); OS << "\n\n"; @@ -1536,16 +1537,16 @@ void EmitClangAttrImpl(RecordKeeper &Records, raw_ostream &OS) { std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); - for (auto i : Attrs) { - Record &R = *i; + for (auto *Attr : Attrs) { + Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; std::vector ArgRecords = R.getValueAsListOfDefs("Args"); std::vector> Args; - for (auto ri : ArgRecords) - Args.emplace_back(createArgument(*ri, R.getName())); + for (const auto *Arg : ArgRecords) + Args.emplace_back(createArgument(*Arg, R.getName())); for (auto const &ai : Args) ai->writeAccessorDefinitions(OS); @@ -1614,16 +1615,16 @@ void EmitClangAttrList(RecordKeeper &Records, raw_ostream &OS) { Record *InhParamClass = Records.getClass("InheritableParamAttr"); std::vector Attrs = Records.getAllDerivedDefinitions("Attr"), NonInhAttrs, InhAttrs, InhParamAttrs; - for (auto i : Attrs) { - if (!i->getValueAsBit("ASTNode")) + for (auto *Attr : Attrs) { + if (!Attr->getValueAsBit("ASTNode")) continue; - if (i->isSubClassOf(InhParamClass)) - InhParamAttrs.push_back(i); - else if (i->isSubClassOf(InhClass)) - InhAttrs.push_back(i); + if (Attr->isSubClassOf(InhParamClass)) + InhParamAttrs.push_back(Attr); + else if (Attr->isSubClassOf(InhClass)) + InhAttrs.push_back(Attr); else - NonInhAttrs.push_back(i); + NonInhAttrs.push_back(Attr); } EmitAttrList(OS, "INHERITABLE_PARAM_ATTR", InhParamAttrs); @@ -1650,8 +1651,8 @@ void EmitClangAttrPCHRead(RecordKeeper &Records, raw_ostream &OS) { OS << " default:\n"; OS << " assert(0 && \"Unknown attribute!\");\n"; OS << " break;\n"; - for (auto i : Attrs) { - const Record &R = *i; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; @@ -1662,8 +1663,8 @@ void EmitClangAttrPCHRead(RecordKeeper &Records, raw_ostream &OS) { OS << " unsigned Spelling = Record[Idx++];\n"; ArgRecords = R.getValueAsListOfDefs("Args"); Args.clear(); - for (auto ai : ArgRecords) { - Args.emplace_back(createArgument(*ai, R.getName())); + for (const auto *Arg : ArgRecords) { + Args.emplace_back(createArgument(*Arg, R.getName())); Args.back()->writePCHReadDecls(OS); } OS << " New = new (Context) " << R.getName() << "Attr(Range, Context"; @@ -1692,8 +1693,8 @@ void EmitClangAttrPCHWrite(RecordKeeper &Records, raw_ostream &OS) { OS << " default:\n"; OS << " llvm_unreachable(\"Unknown attribute kind!\");\n"; OS << " break;\n"; - for (auto i : Attrs) { - const Record &R = *i; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; OS << " case attr::" << R.getName() << ": {\n"; @@ -1706,8 +1707,8 @@ void EmitClangAttrPCHWrite(RecordKeeper &Records, raw_ostream &OS) { OS << " Record.push_back(A->isImplicit());\n"; OS << " Record.push_back(A->getSpellingListIndex());\n"; - for (auto ai : Args) - createArgument(*ai, R.getName())->writePCHWrite(OS); + for (const auto *Arg : Args) + createArgument(*Arg, R.getName())->writePCHWrite(OS); OS << " break;\n"; OS << " }\n"; } @@ -1835,7 +1836,7 @@ void EmitClangAttrSpellingListIndex(RecordKeeper &Records, raw_ostream &OS) { ParsedAttrMap Attrs = getParsedAttrList(Records); for (const auto &I : Attrs) { - Record &R = *I.second; + const Record &R = *I.second; std::vector Spellings = GetFlattenedSpellings(R); OS << " case AT_" << I.first << ": {\n"; for (unsigned I = 0; I < Spellings.size(); ++ I) { @@ -1870,8 +1871,8 @@ void EmitClangAttrASTVisitor(RecordKeeper &Records, raw_ostream &OS) { // We emit this here because we only generate methods for attributes that // are declared as ASTNodes. OS << "#ifdef ATTR_VISITOR_DECLS_ONLY\n\n"; - for (auto I : Attrs) { - const Record &R = *I; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; OS << " bool Traverse" @@ -1884,8 +1885,8 @@ void EmitClangAttrASTVisitor(RecordKeeper &Records, raw_ostream &OS) { OS << "\n#else // ATTR_VISITOR_DECLS_ONLY\n\n"; // Write individual Traverse* methods for each attribute class. - for (auto I : Attrs) { - const Record &R = *I; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; @@ -1898,8 +1899,8 @@ void EmitClangAttrASTVisitor(RecordKeeper &Records, raw_ostream &OS) { << " return false;\n"; std::vector ArgRecords = R.getValueAsListOfDefs("Args"); - for (auto ri : ArgRecords) - createArgument(*ri, R.getName())->writeASTVisitorTraversal(OS); + for (const auto *Arg : ArgRecords) + createArgument(*Arg, R.getName())->writeASTVisitorTraversal(OS); OS << " return true;\n"; OS << "}\n\n"; @@ -1915,8 +1916,8 @@ void EmitClangAttrASTVisitor(RecordKeeper &Records, raw_ostream &OS) { << " default:\n" << " return true;\n"; - for (auto I : Attrs) { - const Record &R = *I; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; @@ -1944,8 +1945,8 @@ void EmitClangAttrTemplateInstantiate(RecordKeeper &Records, raw_ostream &OS) { << " default:\n" << " break;\n"; - for (auto I : Attrs) { - const Record &R = *I; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; @@ -1972,7 +1973,7 @@ void EmitClangAttrTemplateInstantiate(RecordKeeper &Records, raw_ostream &OS) { std::vector> Args; Args.reserve(ArgRecords.size()); - for (auto ArgRecord : ArgRecords) + for (const auto *ArgRecord : ArgRecords) Args.emplace_back(createArgument(*ArgRecord, R.getName())); for (auto const &ai : Args) @@ -2013,7 +2014,7 @@ static void emitArgInfo(const Record &R, std::stringstream &OS) { // number of optional arguments. std::vector Args = R.getValueAsListOfDefs("Args"); unsigned ArgCount = 0, OptCount = 0; - for (auto Arg : Args) { + for (const auto *Arg : Args) { Arg->getValueAsBit("Optional") ? ++OptCount : ++ArgCount; } OS << ArgCount << ", " << OptCount; @@ -2054,8 +2055,8 @@ static std::string CalculateDiagnostic(const Record &S) { uint32_t SubMask = 0; std::vector Subjects = S.getValueAsListOfDefs("Subjects"); - for (auto I : Subjects) { - const Record &R = *I; + for (const auto *Subject : Subjects) { + const Record &R = *Subject; std::string Name; if (R.isSubClassOf("SubsetSubject")) { @@ -2471,8 +2472,8 @@ void EmitClangAttrParsedAttrKinds(RecordKeeper &Records, raw_ostream &OS) { std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); std::vector GNU, Declspec, CXX11, Keywords; std::set Seen; - for (auto I : Attrs) { - const Record &Attr = *I; + for (const auto *A : Attrs) { + const Record &Attr = *A; bool SemaHandler = Attr.getValueAsBit("SemaHandler"); bool Ignored = Attr.getValueAsBit("Ignored"); @@ -2551,8 +2552,8 @@ void EmitClangAttrDump(RecordKeeper &Records, raw_ostream &OS) { " llvm_unreachable(\"Unknown attribute kind!\");\n" " break;\n"; std::vector Attrs = Records.getAllDerivedDefinitions("Attr"), Args; - for (auto I : Attrs) { - const Record &R = *I; + for (const auto *Attr : Attrs) { + const Record &R = *Attr; if (!R.getValueAsBit("ASTNode")) continue; OS << " case attr::" << R.getName() << ": {\n"; @@ -2568,8 +2569,8 @@ void EmitClangAttrDump(RecordKeeper &Records, raw_ostream &OS) { if (!Args.empty()) { OS << " const " << R.getName() << "Attr *SA = cast<" << R.getName() << "Attr>(A);\n"; - for (auto AI : Args) - createArgument(*AI, R.getName())->writeDump(OS); + for (const auto *Arg : Args) + createArgument(*Arg, R.getName())->writeDump(OS); // Code for detecting the last child. OS << " bool OldMoreChildren = hasMoreChildren();\n"; @@ -2777,11 +2778,11 @@ void EmitClangAttrDocs(RecordKeeper &Records, raw_ostream &OS) { // category provided. std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); std::map> SplitDocs; - for (auto I : Attrs) { - const Record &Attr = *I; + for (const auto *A : Attrs) { + const Record &Attr = *A; std::vector Docs = Attr.getValueAsListOfDefs("Documentation"); - for (auto DI : Docs) { - const Record &Doc = *DI; + for (const auto *D : Docs) { + const Record &Doc = *D; const Record *Category = Doc.getValueAsDef("Category"); // If the category is "undocumented", then there cannot be any other // documentation categories (otherwise, the attribute would become