mirror of
https://github.com/intel/llvm.git
synced 2026-01-24 08:30:34 +08:00
[MLIR][TableGen] Minor code cleanup in DirectiveCommonGen (#110290)
Directly Use Clause/ClauseVal as loop iterator. Use llvm::transform instead of std::transform. Use interleaveComma() to generate comma separated list.
This commit is contained in:
@@ -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"); }
|
||||
|
||||
|
||||
@@ -98,10 +98,8 @@ static void GenerateEnumClauseVal(ArrayRef<const Record *> 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()) {
|
||||
|
||||
@@ -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<TDL_Dialect, AKind, "akind">;
|
||||
|
||||
@@ -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<std::string> 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";
|
||||
|
||||
Reference in New Issue
Block a user