diff --git a/llvm/include/llvm/TableGen/DirectiveEmitter.h b/llvm/include/llvm/TableGen/DirectiveEmitter.h index 014a2bc4b883..70d7d8fbe14f 100644 --- a/llvm/include/llvm/TableGen/DirectiveEmitter.h +++ b/llvm/include/llvm/TableGen/DirectiveEmitter.h @@ -247,7 +247,7 @@ private: class ClauseVal : public BaseRecord { public: - explicit ClauseVal(const Record *Def) : BaseRecord(Def) {} + ClauseVal(const Record *Def) : BaseRecord(Def) {} int getValue() const { return Def->getValueAsInt("value"); } diff --git a/llvm/utils/TableGen/DirectiveEmitter.cpp b/llvm/utils/TableGen/DirectiveEmitter.cpp index dc9ed2b08972..9dc29d8262fa 100644 --- a/llvm/utils/TableGen/DirectiveEmitter.cpp +++ b/llvm/utils/TableGen/DirectiveEmitter.cpp @@ -98,10 +98,8 @@ static void GenerateEnumClauseVal(ArrayRef Records, OS << "\n"; OS << "enum class " << EnumName << " {\n"; - for (const auto &CV : ClauseVals) { - ClauseVal CVal(CV); - OS << " " << CV->getName() << "=" << CVal.getValue() << ",\n"; - } + for (const ClauseVal CVal : ClauseVals) + OS << " " << CVal.getRecordName() << "=" << CVal.getValue() << ",\n"; OS << "};\n"; if (DirLang.hasMakeEnumAvailableInNamespace()) { diff --git a/mlir/test/mlir-tblgen/directive-common.td b/mlir/test/mlir-tblgen/directive-common.td index dd86dea36417..9429238a03f0 100644 --- a/mlir/test/mlir-tblgen/directive-common.td +++ b/mlir/test/mlir-tblgen/directive-common.td @@ -26,7 +26,7 @@ def TDLC_ClauseA : Clause<"clausea"> { // CHECK: def AKind: I32EnumAttr< // CHECK: "ClauseAKind", // CHECK: "AKind Clause", -// CHECK: [AKindvala,AKindvalb]> { +// CHECK: [AKindvala, AKindvalb]> { // CHECK: let cppNamespace = "::mlir::tdl"; // CHECK: } // CHECK: def AKindAttr : EnumAttr; diff --git a/mlir/tools/mlir-tblgen/DirectiveCommonGen.cpp b/mlir/tools/mlir-tblgen/DirectiveCommonGen.cpp index de3e6d8ee8cb..26de95fcc577 100644 --- a/mlir/tools/mlir-tblgen/DirectiveCommonGen.cpp +++ b/mlir/tools/mlir-tblgen/DirectiveCommonGen.cpp @@ -54,8 +54,7 @@ static bool emitDecls(const RecordKeeper &recordKeeper, llvm::StringRef dialect, recordKeeper.getAllDerivedDefinitions("DirectiveLanguage"); assert(!directiveLanguages.empty() && "DirectiveLanguage missing."); - for (const Record *r : recordKeeper.getAllDerivedDefinitions("Clause")) { - Clause c{r}; + for (const Clause c : recordKeeper.getAllDerivedDefinitions("Clause")) { const auto &clauseVals = c.getClauseVals(); if (clauseVals.empty()) continue; @@ -65,14 +64,13 @@ static bool emitDecls(const RecordKeeper &recordKeeper, llvm::StringRef dialect, std::vector cvDefs; for (const auto &it : llvm::enumerate(clauseVals)) { - ClauseVal cval{it.value()}; + const ClauseVal cval{it.value()}; if (!cval.isUserVisible()) continue; std::string name = cval.getFormattedName(); std::string enumValName(name.length(), ' '); - std::transform(name.begin(), name.end(), enumValName.begin(), - llvm::toLower); + llvm::transform(name, enumValName.begin(), llvm::toLower); enumValName[0] = llvm::toUpper(enumValName[0]); std::string cvDef{(enumName + llvm::Twine(name)).str()}; os << "def " << cvDef << " : I32EnumAttrCase<\"" << enumValName << "\", " @@ -84,11 +82,7 @@ static bool emitDecls(const RecordKeeper &recordKeeper, llvm::StringRef dialect, os << " \"Clause" << enumName << "\",\n"; os << " \"" << enumName << " Clause\",\n"; os << " ["; - for (unsigned int i = 0; i < cvDefs.size(); i++) { - os << cvDefs[i]; - if (i != cvDefs.size() - 1) - os << ","; - } + llvm::interleaveComma(cvDefs, os); os << "]> {\n"; os << " let cppNamespace = \"::mlir::" << directiveLanguages[0]->getValueAsString("cppNamespace") << "\";\n";