[Mlir-commits] [mlir] [mlir][tblgen] Add custom parsing and printing within struct (PR #133939)

Jorn Tuyls llvmlistbot at llvm.org
Wed Apr 9 05:45:58 PDT 2025


================
@@ -851,16 +897,20 @@ void DefFormat::genCommaSeparatedPrinter(
 
 void DefFormat::genParamsPrinter(ParamsDirective *el, FmtContext &ctx,
                                  MethodBody &os) {
-  genCommaSeparatedPrinter(llvm::to_vector(el->getParams()), ctx, os,
-                           [&](ParameterElement *param) {});
+  SmallVector<FormatElement *> args = llvm::map_to_vector(
+      el->getElements(), [](ParameterElement *param) -> FormatElement * {
+        return reinterpret_cast<ParameterElement *>(param);
+      });
+  genCommaSeparatedPrinter(args, ctx, os, [&](FormatElement *param) {});
 }
 
 void DefFormat::genStructPrinter(StructDirective *el, FmtContext &ctx,
                                  MethodBody &os) {
-  genCommaSeparatedPrinter(
-      llvm::to_vector(el->getParams()), ctx, os, [&](ParameterElement *param) {
-        os << tgfmt("$_printer << \"$0 = \";\n", &ctx, param->getName());
-      });
+  genCommaSeparatedPrinter(el->getElements(), ctx, os, [&](FormatElement *arg) {
+    if (ParameterElement *param = getStructParameterElement(arg)) {
----------------
jtuyls wrote:

See answer above, `param` should never be a nullptr

https://github.com/llvm/llvm-project/pull/133939


More information about the Mlir-commits mailing list