[Mlir-commits] [mlir] [mlir][ODS] Switch declarative rewrite rules to properties structs (PR #124876)
Mehdi Amini
llvmlistbot at llvm.org
Mon Mar 10 03:51:50 PDT 2025
================
@@ -1791,12 +1800,21 @@ void PatternEmitter::createAggregateLocalVarsForOpArgs(
DagNode node, const ChildNodeIndexNameMap &childNodeNames, int depth) {
Operator &resultOp = node.getDialectOp(opMap);
+ bool useProperties = resultOp.getDialect().usePropertiesForAttributes();
auto scope = os.scope();
os << formatv("::llvm::SmallVector<::mlir::Value, 4> "
"tblgen_values; (void)tblgen_values;\n");
- os << formatv("::llvm::SmallVector<::mlir::NamedAttribute, 4> "
- "tblgen_attrs; (void)tblgen_attrs;\n");
+ if (useProperties) {
+ os << formatv("{0}::Properties tblgen_props; (void)tblgen_props;\n",
+ resultOp.getQualCppClassName());
+ } else {
+ os << formatv("::llvm::SmallVector<::mlir::NamedAttribute, 4> "
+ "tblgen_attrs; (void)tblgen_attrs;\n");
+ }
+ const char *setPropCmd =
+ "tblgen_props.{0} = "
+ "::llvm::dyn_cast_if_present<decltype(tblgen_props.{0})>({1});\n";
const char *addAttrCmd =
"if (auto tmpAttr = {1}) {\n"
" tblgen_attrs.emplace_back(rewriter.getStringAttr(\"{0}\"), "
----------------
joker-eph wrote:
```suggestion
const char *setPropCmd =
"tblgen_props.{0} = "
"::llvm::dyn_cast_if_present<decltype(tblgen_props.{0})>({1});\n";
const char *addAttrCmd =
"if (auto tmpAttr = {1}) {\n"
" tblgen_attrs.emplace_back(rewriter.getStringAttr(\"{0}\"), "
"tmpAttr);\n}\n";
const char *setterCmd = (useProperties) ? setPropCmd : addAttrCmd;
```
What about doing this and avoiding the `if (useProperties)` below? I think they only differ in which of these template is used.
https://github.com/llvm/llvm-project/pull/124876
More information about the Mlir-commits
mailing list