[llvm-branch-commits] [mlir] [mlir] Decouple enum generation from attributes, adding EnumInfo and EnumCase (PR #132148)
Krzysztof Drewniak via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Mar 23 18:34:37 PDT 2025
================
@@ -66,20 +67,34 @@ static void emitEnumClass(const Record &enumDef, StringRef enumName,
os << "};\n\n";
}
-static void emitParserPrinter(const EnumAttr &enumAttr, StringRef qualName,
+static void emitParserPrinter(const EnumInfo &enumInfo, StringRef qualName,
StringRef cppNamespace, raw_ostream &os) {
- if (enumAttr.getUnderlyingType().empty() ||
- enumAttr.getConstBuilderTemplate().empty())
+ std::optional<Attribute> enumAttrInfo = enumInfo.asEnumAttr();
+ if (enumInfo.getUnderlyingType().empty() ||
+ (enumAttrInfo && enumAttrInfo->getConstBuilderTemplate().empty()))
return;
- auto cases = enumAttr.getAllCases();
+ auto cases = enumInfo.getAllCases();
// Check which cases shouldn't be printed using a keyword.
llvm::BitVector nonKeywordCases(cases.size());
- for (auto [index, caseVal] : llvm::enumerate(cases))
- if (!mlir::tblgen::canFormatStringAsKeyword(caseVal.getStr()))
+ std::string casesList;
+ llvm::raw_string_ostream caseListOs(casesList);
+ caseListOs << "[";
+ for (auto [index, caseVal] : llvm::enumerate(cases)) {
+ if (index != 0)
----------------
krzysz00 wrote:
Looks like I can, yeah
https://github.com/llvm/llvm-project/pull/132148
More information about the llvm-branch-commits
mailing list