[Mlir-commits] [mlir] [MLIR] Enable strict assembly properties for the builtin dialect (PR #225750)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Sep 23 05:46:54 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mlir

Author: Mehdi Amini (joker-eph)

<details>
<summary>Changes</summary>

Print ModuleOp visibility in the property dictionary and retain its separate discardable attribute dictionary. Update affected assembly tests.

Assisted-by: Codex

---
Full diff: https://github.com/llvm/llvm-project/pull/225750.diff


5 Files Affected:

- (modified) mlir/include/mlir/IR/BuiltinDialect.td (+1) 
- (modified) mlir/include/mlir/IR/BuiltinOps.td (+1-1) 
- (modified) mlir/test/IR/module-op.mlir (+6) 
- (modified) mlir/test/Transforms/sccp-callgraph.mlir (+1-1) 
- (modified) mlir/test/Transforms/test-symbol-dce.mlir (+2-2) 


``````````diff
diff --git a/mlir/include/mlir/IR/BuiltinDialect.td b/mlir/include/mlir/IR/BuiltinDialect.td
index c770dd50f3622..35ea65671a7f8 100644
--- a/mlir/include/mlir/IR/BuiltinDialect.td
+++ b/mlir/include/mlir/IR/BuiltinDialect.td
@@ -20,6 +20,7 @@ def Builtin_Dialect : Dialect {
   let summary =
     "A dialect containing the builtin Attributes, Operations, and Types";
   let name = "builtin";
+  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir";
   let useDefaultAttributePrinterParser = 0;
   let useDefaultTypePrinterParser = 0;
diff --git a/mlir/include/mlir/IR/BuiltinOps.td b/mlir/include/mlir/IR/BuiltinOps.td
index f16b686762b48..fb39d50906493 100644
--- a/mlir/include/mlir/IR/BuiltinOps.td
+++ b/mlir/include/mlir/IR/BuiltinOps.td
@@ -58,7 +58,7 @@ def ModuleOp : Builtin_Op<"module", [
                        OptionalAttr<StrAttr>:$sym_visibility);
   let regions = (region SizedRegion<1>:$bodyRegion);
 
-  let assemblyFormat = "($sym_name^)? attr-dict-with-keyword $bodyRegion";
+  let assemblyFormat = "($sym_name^)? prop-dict attr-dict-with-keyword $bodyRegion";
   let builders = [OpBuilder<(ins CArg<"std::optional<StringRef>", "{}">:$name)>];
   let extraClassDeclaration = [{
     /// Construct a module from the given location with an optional name.
diff --git a/mlir/test/IR/module-op.mlir b/mlir/test/IR/module-op.mlir
index d99806c92a902..9401b0887b6b7 100644
--- a/mlir/test/IR/module-op.mlir
+++ b/mlir/test/IR/module-op.mlir
@@ -12,6 +12,12 @@ module attributes {foo.attr = true} {
 
 // -----
 
+// CHECK: module @property_module <sym_visibility = "private"> attributes {foo.attr = true} {
+module @property_module <sym_visibility = "private"> attributes {foo.attr = true} {
+}
+
+// -----
+
 // CHECK: module {
 module {
   // CHECK-NEXT: "foo.result_op"() : () -> i32
diff --git a/mlir/test/Transforms/sccp-callgraph.mlir b/mlir/test/Transforms/sccp-callgraph.mlir
index f31f749b6e75a..8c74b80625fa7 100644
--- a/mlir/test/Transforms/sccp-callgraph.mlir
+++ b/mlir/test/Transforms/sccp-callgraph.mlir
@@ -51,7 +51,7 @@ func.func @simple_nested() -> i32 {
 /// Check that non-visible nested functions do not track arguments.
 module {
   // NESTED-LABEL: module @nested_module
-  module @nested_module attributes { sym_visibility = "public" } {
+  module @nested_module <sym_visibility = "public"> {
 
     // NESTED: func nested @nested(
     func.func nested @nested(%arg0 : i32) -> (i32, i32) {
diff --git a/mlir/test/Transforms/test-symbol-dce.mlir b/mlir/test/Transforms/test-symbol-dce.mlir
index 90fe93f806d69..a89e59201087f 100644
--- a/mlir/test/Transforms/test-symbol-dce.mlir
+++ b/mlir/test/Transforms/test-symbol-dce.mlir
@@ -57,14 +57,14 @@ module attributes {test.no_dce_non_hidden_parent} {
     func.func nested @nested_function()
   }
   // NESTED: module @nested_module
-  module @nested_module attributes { sym_visibility = "nested" } {
+  module @nested_module <sym_visibility = "nested"> {
     // NESTED: func nested @nested_function
     func.func nested @nested_function()
   }
 
   // Only private modules can be assumed to be hidden.
   // NESTED: module @private_module
-  module @private_module attributes { sym_visibility = "private" } {
+  module @private_module <sym_visibility = "private"> {
     // NESTED-NOT: func nested @nested_function
     func.func nested @nested_function()
   }

``````````

</details>


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


More information about the Mlir-commits mailing list