[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