[Mlir-commits] [mlir] [MLIR] Forward generated OpTy::create arguments (PR #170012)
Jason Rice
llvmlistbot at llvm.org
Sat Nov 29 17:13:17 PST 2025
https://github.com/ricejasonf updated https://github.com/llvm/llvm-project/pull/170012
>From 60da413bf5dc7e9d00b4f7ae71b69f991013a199 Mon Sep 17 00:00:00 2001
From: Jason Rice <ricejasonf at gmail.com>
Date: Sat, 29 Nov 2025 15:12:09 -0800
Subject: [PATCH] [MLIR] Forward generated OpTy::create arguments
---
mlir/test/mlir-tblgen/op-decl-and-defs.td | 4 ++--
mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp | 9 ++++++++-
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/mlir/test/mlir-tblgen/op-decl-and-defs.td b/mlir/test/mlir-tblgen/op-decl-and-defs.td
index 0e87373b2f6c2..5496e376cc2f0 100644
--- a/mlir/test/mlir-tblgen/op-decl-and-defs.td
+++ b/mlir/test/mlir-tblgen/op-decl-and-defs.td
@@ -235,14 +235,14 @@ def NS_FOp : NS_Op<"op_with_all_types_constraint",
// DEFS: FOp FOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value a) {
// DEFS: ::mlir::OperationState __state__(location, getOperationName());
-// DEFS: build(builder, __state__, a);
+// DEFS: build(builder, __state__, static_cast<decltype(a)>(a));
// DEFS: auto __res__ = ::llvm::dyn_cast<FOp>(builder.create(__state__));
// DEFS: assert(__res__ && "builder didn't return the right type");
// DEFS: return __res__;
// DEFS: }
// DEFS: FOp FOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value a) {
-// DEFS: return create(builder, builder.getLoc(), a);
+// DEFS: return create(builder, builder.getLoc(), static_cast<decltype(a)>(a));
// DEFS: }
def NS_GOp : NS_Op<"op_with_fixed_return_type", []> {
diff --git a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
index 3b10842f2a127..4f6c70e269fee 100644
--- a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
+++ b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
@@ -2641,7 +2641,14 @@ void OpEmitter::genInlineCreateBody(
std::string nonBuilderStateArgs = "";
if (!nonBuilderStateArgsList.empty()) {
llvm::raw_string_ostream nonBuilderStateArgsOS(nonBuilderStateArgs);
- interleaveComma(nonBuilderStateArgsList, nonBuilderStateArgsOS);
+ interleave(
+ nonBuilderStateArgsList,
+ [&](StringRef name) {
+ nonBuilderStateArgsOS << "static_cast<decltype(" << name << ")>("
+ << name << ')';
+ },
+ [&] { nonBuilderStateArgsOS << ", "; });
+
nonBuilderStateArgs = ", " + nonBuilderStateArgs;
}
if (cWithLoc)
More information about the Mlir-commits
mailing list