https://github.com/joker-eph updated 
https://github.com/llvm/llvm-project/pull/225742

>From aeaa22013440fb2043e3f898bb2c75125b0fb3a5 Mon Sep 17 00:00:00 2001
From: Mehdi Amini <[email protected]>
Date: Wed, 23 Sep 2026 04:49:08 -0700
Subject: [PATCH] [mlir] Enable strict properties in assembly formats by
 default

Make strict property assembly formats the default and remove redundant
per-dialect settings. Keep the test dialect and the Flang and CIR dialects
in legacy mode where their formats still rely on it, and update the
documentation.

Assisted-by: Codex
---
 .../clang/CIR/Dialect/IR/CIRDialect.td        |  1 +
 .../flang/Optimizer/Dialect/CUF/CUFDialect.td |  1 +
 .../flang/Optimizer/Dialect/FIRCG/CGOps.td    |  1 +
 .../flang/Optimizer/Dialect/FIRDialect.td     |  1 +
 .../flang/Optimizer/Dialect/MIF/MIFDialect.td |  1 +
 .../flang/Optimizer/HLFIR/HLFIROpBase.td      |  1 +
 mlir/docs/DefiningDialects/Operations.md      | 20 +++++++---------
 mlir/docs/DefiningDialects/_index.md          | 24 +++++++++----------
 .../mlir/Dialect/AMDGPU/IR/AMDGPUBase.td      |  1 -
 .../mlir/Dialect/Affine/IR/AffineOps.td       |  1 -
 .../mlir/Dialect/Arith/IR/ArithBase.td        |  1 -
 mlir/include/mlir/Dialect/ArmNeon/ArmNeon.td  |  1 -
 mlir/include/mlir/Dialect/ArmSME/IR/ArmSME.td |  1 -
 mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td |  1 -
 .../mlir/Dialect/Async/IR/AsyncDialect.td     |  1 -
 .../Bufferization/IR/BufferizationBase.td     |  1 -
 .../mlir/Dialect/Complex/IR/ComplexBase.td    |  1 -
 .../Dialect/ControlFlow/IR/ControlFlowOps.td  |  1 -
 mlir/include/mlir/Dialect/DLTI/DLTIBase.td    |  1 -
 .../mlir/Dialect/EmitC/IR/EmitCBase.td        |  1 -
 mlir/include/mlir/Dialect/Func/IR/FuncOps.td  |  1 -
 mlir/include/mlir/Dialect/GPU/IR/GPUBase.td   |  1 -
 mlir/include/mlir/Dialect/IRDL/IR/IRDL.td     |  1 -
 .../mlir/Dialect/Index/IR/IndexDialect.td     |  1 -
 .../mlir/Dialect/LLVMIR/LLVMDialect.td        |  1 -
 .../mlir/Dialect/LLVMIR/NVVMDialect.td        |  1 -
 .../mlir/Dialect/LLVMIR/ROCDLDialect.td       |  1 -
 mlir/include/mlir/Dialect/LLVMIR/VCIXOps.td   |  1 -
 mlir/include/mlir/Dialect/LLVMIR/XeVMOps.td   |  1 -
 .../mlir/Dialect/Linalg/IR/LinalgBase.td      |  1 -
 .../Dialect/MLProgram/IR/MLProgramBase.td     |  1 -
 mlir/include/mlir/Dialect/MPI/IR/MPI.td       |  1 -
 mlir/include/mlir/Dialect/Math/IR/MathBase.td |  1 -
 .../mlir/Dialect/MemRef/IR/MemRefBase.td      |  1 -
 mlir/include/mlir/Dialect/NVGPU/IR/NVGPU.td   |  1 -
 .../mlir/Dialect/OpenACC/OpenACCBase.td       |  1 -
 .../mlir/Dialect/OpenMP/OpenMPDialect.td      |  1 -
 .../include/mlir/Dialect/PDL/IR/PDLDialect.td |  1 -
 .../mlir/Dialect/PDLInterp/IR/PDLInterpOps.td |  1 -
 .../include/mlir/Dialect/Ptr/IR/PtrDialect.td |  1 -
 .../mlir/Dialect/Quant/IR/QuantBase.td        |  1 -
 mlir/include/mlir/Dialect/SCF/IR/SCFOps.td    |  1 -
 .../include/mlir/Dialect/SMT/IR/SMTDialect.td |  1 -
 .../mlir/Dialect/SPIRV/IR/SPIRVBase.td        |  1 -
 .../mlir/Dialect/Shape/IR/ShapeBase.td        |  1 -
 .../mlir/Dialect/Shard/IR/ShardBase.td        |  1 -
 .../SparseTensor/IR/SparseTensorBase.td       |  1 -
 .../mlir/Dialect/Tensor/IR/TensorBase.td      |  1 -
 .../mlir/Dialect/Tosa/IR/TosaOpBase.td        |  1 -
 .../Dialect/Transform/IR/TransformDialect.td  |  1 -
 mlir/include/mlir/Dialect/UB/IR/UBOps.td      |  1 -
 mlir/include/mlir/Dialect/Vector/IR/Vector.td |  1 -
 .../mlir/Dialect/WasmSSA/IR/WasmSSABase.td    |  1 -
 mlir/include/mlir/Dialect/X86/X86.td          |  1 -
 .../mlir/Dialect/XeGPU/IR/XeGPUDialect.td     |  1 -
 mlir/include/mlir/IR/BuiltinDialect.td        |  1 -
 mlir/include/mlir/IR/DialectBase.td           | 12 ++++++----
 mlir/test/lib/Dialect/Test/TestDialect.td     |  2 ++
 mlir/test/mlir-tblgen/op-format-invalid.td    |  3 ++-
 mlir/test/mlir-tblgen/op-format.td            |  3 ++-
 60 files changed, 38 insertions(+), 80 deletions(-)

diff --git a/clang/include/clang/CIR/Dialect/IR/CIRDialect.td 
b/clang/include/clang/CIR/Dialect/IR/CIRDialect.td
index b2a2707a67b667..aee862afc02b43 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIRDialect.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIRDialect.td
@@ -17,6 +17,7 @@ include "mlir/IR/OpBase.td"
 
 def CIR_Dialect : Dialect {
   let name = "cir";
+  let useStrictPropertiesInAssemblyFormat = 0;
 
   // A short one-line summary of our dialect.
   let summary = "A high-level dialect for analyzing and optimizing Clang "
diff --git a/flang/include/flang/Optimizer/Dialect/CUF/CUFDialect.td 
b/flang/include/flang/Optimizer/Dialect/CUF/CUFDialect.td
index 0cabd55f1ea5ab..984c457f048311 100644
--- a/flang/include/flang/Optimizer/Dialect/CUF/CUFDialect.td
+++ b/flang/include/flang/Optimizer/Dialect/CUF/CUFDialect.td
@@ -20,6 +20,7 @@ include "mlir/IR/OpBase.td"
 
 def CUFDialect : Dialect {
   let name = "cuf";
+  let useStrictPropertiesInAssemblyFormat = 0;
 
   let summary = "CUDA Fortran dialect";
 
diff --git a/flang/include/flang/Optimizer/Dialect/FIRCG/CGOps.td 
b/flang/include/flang/Optimizer/Dialect/FIRCG/CGOps.td
index 5a7c85e7883fa3..5409b81b59aa3b 100644
--- a/flang/include/flang/Optimizer/Dialect/FIRCG/CGOps.td
+++ b/flang/include/flang/Optimizer/Dialect/FIRCG/CGOps.td
@@ -22,6 +22,7 @@ include "mlir/IR/BuiltinAttributes.td"
 
 def fircg_Dialect : Dialect {
   let name = "fircg";
+  let useStrictPropertiesInAssemblyFormat = 0;
   let cppNamespace = "::fir::cg";
 }
 
diff --git a/flang/include/flang/Optimizer/Dialect/FIRDialect.td 
b/flang/include/flang/Optimizer/Dialect/FIRDialect.td
index 415bf7a6a95fec..3ac9a12d5cf55e 100644
--- a/flang/include/flang/Optimizer/Dialect/FIRDialect.td
+++ b/flang/include/flang/Optimizer/Dialect/FIRDialect.td
@@ -23,6 +23,7 @@ include "mlir/Interfaces/SideEffectInterfaces.td"
 
 def FIROpsDialect : Dialect {
   let name = "fir";
+  let useStrictPropertiesInAssemblyFormat = 0;
   let cppNamespace = "::fir";
   let useDefaultTypePrinterParser = 0;
   let useDefaultAttributePrinterParser = 0;
diff --git a/flang/include/flang/Optimizer/Dialect/MIF/MIFDialect.td 
b/flang/include/flang/Optimizer/Dialect/MIF/MIFDialect.td
index f8be6a86a79fec..c4dccc9b77dba9 100644
--- a/flang/include/flang/Optimizer/Dialect/MIF/MIFDialect.td
+++ b/flang/include/flang/Optimizer/Dialect/MIF/MIFDialect.td
@@ -20,6 +20,7 @@ include "mlir/IR/OpBase.td"
 
 def MIFDialect : Dialect {
   let name = "mif";
+  let useStrictPropertiesInAssemblyFormat = 0;
 
   let summary = "Multi-Image Fortran dialect";
 
diff --git a/flang/include/flang/Optimizer/HLFIR/HLFIROpBase.td 
b/flang/include/flang/Optimizer/HLFIR/HLFIROpBase.td
index 1f46b69561d68c..a0764077289aa0 100644
--- a/flang/include/flang/Optimizer/HLFIR/HLFIROpBase.td
+++ b/flang/include/flang/Optimizer/HLFIR/HLFIROpBase.td
@@ -21,6 +21,7 @@ include "flang/Optimizer/Dialect/FIRTypes.td"
 
 def hlfir_Dialect : Dialect {
   let name = "hlfir";
+  let useStrictPropertiesInAssemblyFormat = 0;
 
   let summary = "High Level Fortran IR.";
 
diff --git a/mlir/docs/DefiningDialects/Operations.md 
b/mlir/docs/DefiningDialects/Operations.md
index 5615af678d3392..f991f5308c5ae4 100644
--- a/mlir/docs/DefiningDialects/Operations.md
+++ b/mlir/docs/DefiningDialects/Operations.md
@@ -759,15 +759,12 @@ The available directives are as follows:
 
 *   `attr-dict`
 
-    -   Represents the attribute dictionary of the operation.
-    -   Any inherent attributes that are not used elsewhere in the format are
-        printed as part of the attribute dictionary unless a `prop-dict` is
-        present.
-    -   Discardable attributes are always part of the `attr-dict`.
-    -   For dialects that set `useStrictPropertiesInAssemblyFormat`,
-        `attr-dict` only carries discardable attributes for property-backed
-        operations. Inherent attributes must be bound directly in the format or
-        covered by `prop-dict`.
+    -   Represents the attribute dictionary of the operation. Under the
+        default strict format rules, it contains only discardable attributes.
+        Inherent attributes must be bound directly in the format or covered by
+        `prop-dict`. The deprecated `useStrictPropertiesInAssemblyFormat = 0`
+        setting temporarily allows inherent attributes to mix with discardable
+        attributes in `attr-dict`.
 
 *   `attr-dict-with-keyword`
 
@@ -1142,9 +1139,8 @@ to:
     directives.
 1.  Unless all non-attribute properties appear in the format, the `prop-dict`
     directive must be present.
-1.  For dialects that set `useStrictPropertiesInAssemblyFormat`, every inherent
-    attribute and property must either appear in the format or be covered by 
the
-    `prop-dict` directive.
+1.  Every inherent attribute and property must either appear in the format or
+    be covered by the `prop-dict` directive.
 1.  The `attr-dict` directive must always be present.
 1.  Must not contain overlapping information; e.g. multiple instances of
     'attr-dict', types, operands, etc.
diff --git a/mlir/docs/DefiningDialects/_index.md 
b/mlir/docs/DefiningDialects/_index.md
index d4ffd066a61cd8..22d067c0a66f6b 100644
--- a/mlir/docs/DefiningDialects/_index.md
+++ b/mlir/docs/DefiningDialects/_index.md
@@ -274,22 +274,20 @@ For a more detail description of the expected usages of 
this hook, view the deta
 
 ### Strict Property Assembly Formats
 
-Dialects can set `useStrictPropertiesInAssemblyFormat` to require declarative
-assembly formats for property-backed operations to account for all inherent
-attributes and properties:
-
-```tablegen
-def MyDialect : Dialect {
-  let useStrictPropertiesInAssemblyFormat = 1;
-}
-```
-
-This mode is disabled by default for now. When enabled, an operation format 
must
+Declarative assembly formats for property-backed operations must account for
+all inherent attributes and properties by default. An operation format must
 either bind every inherent attribute and property directly in the format or
 include the `prop-dict` directive. Generated parsers also reject inherent
 attributes that arrive through `attr-dict`, so `attr-dict` only carries
-discardable attributes for these formats. See the
-[declarative assembly format](Operations.md/#declarative-assembly-format)
+discardable attributes for these formats.
+
+The `useStrictPropertiesInAssemblyFormat` field is deprecated. Setting it to
+`0` temporarily opts a dialect into legacy behavior, allowing inherent
+attributes to mix with discardable attributes in `attr-dict`. Dialects using
+this setting should migrate their formats to bind inherent attributes directly
+or use `prop-dict`.
+
+See the [declarative assembly 
format](Operations.md/#declarative-assembly-format)
 documentation for the corresponding format requirements.
 
 ### Default Attribute/Type Parsers and Printers 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPUBase.td 
b/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPUBase.td
index 8dc4b3a81c3345..639dbf6b4a128b 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPUBase.td
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPUBase.td
@@ -14,7 +14,6 @@ include "mlir/IR/DialectBase.td"
 def AMDGPU_Dialect : Dialect {
   let name = "amdgpu";
   let cppNamespace = "::mlir::amdgpu";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let description = [{
     The `AMDGPU` dialect provides wrappers around AMD-specific functionality
     and LLVM intrinsics. These wrappers should be used in conjunction with
diff --git a/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td 
b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td
index d37fc62e3ed515..6215d5c2926304 100644
--- a/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td
+++ b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td
@@ -26,7 +26,6 @@ include "mlir/Interfaces/SideEffectInterfaces.td"
 
 def Affine_Dialect : Dialect {
   let name = "affine";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::affine";
   let hasConstantMaterializer = 1;
   let dependentDialects = ["arith::ArithDialect", "ub::UBDialect"];
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td 
b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td
index 71e198458d3427..0c05c4db79bed6 100644
--- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td
+++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td
@@ -14,7 +14,6 @@ include "mlir/IR/OpBase.td"
 
 def Arith_Dialect : Dialect {
   let name = "arith";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::arith";
   let description = [{
     The arith dialect is intended to hold basic integer and floating point
diff --git a/mlir/include/mlir/Dialect/ArmNeon/ArmNeon.td 
b/mlir/include/mlir/Dialect/ArmNeon/ArmNeon.td
index fd0fa7ecf9b0da..ce86ff2cfd9222 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/ArmNeon.td
+++ b/mlir/include/mlir/Dialect/ArmNeon/ArmNeon.td
@@ -23,7 +23,6 @@ include "mlir/IR/OpBase.td"
 
 def ArmNeon_Dialect : Dialect {
   let name = "arm_neon";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::arm_neon";
 
   // Note: this does not need to depend on LLVMDialect as long as functions in
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/ArmSME.td 
b/mlir/include/mlir/Dialect/ArmSME/IR/ArmSME.td
index f937af9c35a71e..ffafb2569310ed 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/ArmSME.td
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/ArmSME.td
@@ -23,7 +23,6 @@ include "mlir/Dialect/LLVMIR/LLVMOpBase.td"
 
 def ArmSME_Dialect : Dialect {
   let name = "arm_sme";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::arm_sme";
   let summary = "Basic dialect to target Arm SME architectures";
   let description = [{
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td 
b/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td
index be4d9b123ac820..2f23404991799e 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td
@@ -22,7 +22,6 @@ include "mlir/Dialect/LLVMIR/LLVMOpBase.td"
 
 def ArmSVE_Dialect : Dialect {
   let name = "arm_sve";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::arm_sve";
   let summary = "Basic dialect to target Arm SVE architectures";
   let description = [{
diff --git a/mlir/include/mlir/Dialect/Async/IR/AsyncDialect.td 
b/mlir/include/mlir/Dialect/Async/IR/AsyncDialect.td
index f2c328a61e4cf0..eb1d76a180fe24 100644
--- a/mlir/include/mlir/Dialect/Async/IR/AsyncDialect.td
+++ b/mlir/include/mlir/Dialect/Async/IR/AsyncDialect.td
@@ -21,7 +21,6 @@ include "mlir/IR/OpBase.td"
 
 def AsyncDialect : Dialect {
   let name = "async";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::async";
 
   let summary = "Types and operations for async dialect";
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/BufferizationBase.td 
b/mlir/include/mlir/Dialect/Bufferization/IR/BufferizationBase.td
index 2ef0c93be8bf22..ac19f878656b56 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/BufferizationBase.td
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/BufferizationBase.td
@@ -31,7 +31,6 @@ def Bufferization_Dialect : Dialect {
     "affine::AffineDialect", "memref::MemRefDialect", "tensor::TensorDialect",
     "arith::ArithDialect"
   ];
-  let useStrictPropertiesInAssemblyFormat = 1;
 
   let extraClassDeclaration = [{
     /// Verify an attribute from this dialect on the argument at 'argIndex' for
diff --git a/mlir/include/mlir/Dialect/Complex/IR/ComplexBase.td 
b/mlir/include/mlir/Dialect/Complex/IR/ComplexBase.td
index 4efe1bcc620c2f..c8af498f448295 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/ComplexBase.td
+++ b/mlir/include/mlir/Dialect/Complex/IR/ComplexBase.td
@@ -14,7 +14,6 @@ include "mlir/IR/OpBase.td"
 
 def Complex_Dialect : Dialect {
   let name = "complex";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::complex";
   let description = [{
     The complex dialect is intended to hold complex numbers creation and
diff --git a/mlir/include/mlir/Dialect/ControlFlow/IR/ControlFlowOps.td 
b/mlir/include/mlir/Dialect/ControlFlow/IR/ControlFlowOps.td
index 0e4c4eb78b94b3..a441fd82546e39 100644
--- a/mlir/include/mlir/Dialect/ControlFlow/IR/ControlFlowOps.td
+++ b/mlir/include/mlir/Dialect/ControlFlow/IR/ControlFlowOps.td
@@ -23,7 +23,6 @@ def ControlFlow_Dialect : Dialect {
   let name = "cf";
   let cppNamespace = "::mlir::cf";
   let dependentDialects = ["arith::ArithDialect"];
-  let useStrictPropertiesInAssemblyFormat = 1;
   let description = [{
     This dialect contains low-level, i.e. non-region based, control flow
     constructs. These constructs generally represent control flow directly
diff --git a/mlir/include/mlir/Dialect/DLTI/DLTIBase.td 
b/mlir/include/mlir/Dialect/DLTI/DLTIBase.td
index f7c9be4fd78809..3754f3699c7fdc 100644
--- a/mlir/include/mlir/Dialect/DLTI/DLTIBase.td
+++ b/mlir/include/mlir/Dialect/DLTI/DLTIBase.td
@@ -76,7 +76,6 @@ def DLTI_Dialect : Dialect {
   }];
 
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 def HasDefaultDLTIDataLayout : NativeOpTrait<"HasDefaultDLTIDataLayout"> {
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/EmitCBase.td 
b/mlir/include/mlir/Dialect/EmitC/IR/EmitCBase.td
index a7144df36045e9..375dbcbce1d036 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/EmitCBase.td
+++ b/mlir/include/mlir/Dialect/EmitC/IR/EmitCBase.td
@@ -31,7 +31,6 @@ def EmitC_Dialect : Dialect {
   let hasConstantMaterializer = 1;
   let useDefaultTypePrinterParser = 1;
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 #endif // MLIR_DIALECT_EMITC_IR_EMITCBASE
diff --git a/mlir/include/mlir/Dialect/Func/IR/FuncOps.td 
b/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
index d7a0d5fc4f277a..a99147b380eb33 100644
--- a/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
+++ b/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
@@ -22,7 +22,6 @@ def Func_Dialect : Dialect {
   let name = "func";
   let cppNamespace = "::mlir::func";
   let hasConstantMaterializer = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 // Base class for Func dialect ops.
diff --git a/mlir/include/mlir/Dialect/GPU/IR/GPUBase.td 
b/mlir/include/mlir/Dialect/GPU/IR/GPUBase.td
index 8f3cffcdf43fa7..f75d3ae0bd02fa 100644
--- a/mlir/include/mlir/Dialect/GPU/IR/GPUBase.td
+++ b/mlir/include/mlir/Dialect/GPU/IR/GPUBase.td
@@ -82,7 +82,6 @@ def GPU_Dialect : Dialect {
   let dependentDialects = ["arith::ArithDialect"];
   let useDefaultAttributePrinterParser = 1;
   let useDefaultTypePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 
//===----------------------------------------------------------------------===//
diff --git a/mlir/include/mlir/Dialect/IRDL/IR/IRDL.td 
b/mlir/include/mlir/Dialect/IRDL/IR/IRDL.td
index f554358ed373d4..e822969fc575eb 100644
--- a/mlir/include/mlir/Dialect/IRDL/IR/IRDL.td
+++ b/mlir/include/mlir/Dialect/IRDL/IR/IRDL.td
@@ -74,7 +74,6 @@ def IRDL_Dialect : Dialect {
 
   let name = "irdl";
   let cppNamespace = "::mlir::irdl";
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 #endif // MLIR_DIALECT_IRDL_IR_IRDL
diff --git a/mlir/include/mlir/Dialect/Index/IR/IndexDialect.td 
b/mlir/include/mlir/Dialect/Index/IR/IndexDialect.td
index df6087818cc8f4..be0fea79ee3920 100644
--- a/mlir/include/mlir/Dialect/Index/IR/IndexDialect.td
+++ b/mlir/include/mlir/Dialect/Index/IR/IndexDialect.td
@@ -83,7 +83,6 @@ def IndexDialect : Dialect {
 
   let hasConstantMaterializer = 1;
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 #endif // INDEX_DIALECT
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td 
b/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td
index f48cb5385590b1..864fc0f647bd1d 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td
@@ -20,7 +20,6 @@ def LLVM_Dialect : Dialect {
   let hasRegionArgAttrVerify = 1;
   let hasRegionResultAttrVerify = 1;
   let hasOperationAttrVerify = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 
   let discardableAttrs = (ins
     /// Attribute encoding size and type of GPU workgroup attributions.
diff --git a/mlir/include/mlir/Dialect/LLVMIR/NVVMDialect.td 
b/mlir/include/mlir/Dialect/LLVMIR/NVVMDialect.td
index c0f2ee062987e9..025e093ebd8b61 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/NVVMDialect.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/NVVMDialect.td
@@ -21,7 +21,6 @@ def NVVM_Dialect : Dialect {
   let cppNamespace = "::mlir::NVVM";
   let dependentDialects = ["LLVM::LLVMDialect"];
   let hasOperationAttrVerify = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 
   let extraClassDeclaration = [{
     /// Get the name of the attribute used to annotate external kernel
diff --git a/mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.td 
b/mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.td
index a05913bb2c15ff..5e6cefd977f328 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.td
@@ -18,7 +18,6 @@ include "mlir/Dialect/LLVMIR/LLVMOpBase.td"
 def ROCDL_Dialect : Dialect {
   let name = "rocdl";
   let cppNamespace = "::mlir::ROCDL";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let dependentDialects = ["LLVM::LLVMDialect"];
   let summary = "Dialect for wrapping LLVM AMDGPU backend intrinsics and 
attributes";
   let hasOperationAttrVerify = 1;
diff --git a/mlir/include/mlir/Dialect/LLVMIR/VCIXOps.td 
b/mlir/include/mlir/Dialect/LLVMIR/VCIXOps.td
index 02f80bbd564513..27d9a32dd8e031 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/VCIXOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/VCIXOps.td
@@ -31,7 +31,6 @@ def VCIX_Dialect : Dialect {
   let name = "vcix";
   let cppNamespace = "::mlir::vcix";
   let dependentDialects = ["LLVM::LLVMDialect"];
-  let useStrictPropertiesInAssemblyFormat = 1;
   let description = [{
      The SiFive Vector Coprocessor Interface (VCIX) provides a flexible 
mechanism
      to extend application processors with custom coprocessors and
diff --git a/mlir/include/mlir/Dialect/LLVMIR/XeVMOps.td 
b/mlir/include/mlir/Dialect/LLVMIR/XeVMOps.td
index fdf6263094bb22..995bb758924c2f 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/XeVMOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/XeVMOps.td
@@ -37,7 +37,6 @@ def XeVM_Dialect : Dialect {
   }];
 
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 class XeVM_Attr<string attrName, string attrMnemonic, list<Trait> traits = []>
diff --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgBase.td 
b/mlir/include/mlir/Dialect/Linalg/IR/LinalgBase.td
index 5d53dbc4613177..85857d3c11206b 100644
--- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgBase.td
+++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgBase.td
@@ -43,7 +43,6 @@ def Linalg_Dialect : Dialect {
     "tensor::TensorDialect",
   ];
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
   let hasCanonicalizer = 1;
   let hasOperationAttrVerify = 1;
   let hasConstantMaterializer = 1;
diff --git a/mlir/include/mlir/Dialect/MLProgram/IR/MLProgramBase.td 
b/mlir/include/mlir/Dialect/MLProgram/IR/MLProgramBase.td
index 5ed346aeade5db..a585059020eaf6 100644
--- a/mlir/include/mlir/Dialect/MLProgram/IR/MLProgramBase.td
+++ b/mlir/include/mlir/Dialect/MLProgram/IR/MLProgramBase.td
@@ -13,7 +13,6 @@ include "mlir/IR/OpBase.td"
 
 def MLProgram_Dialect : Dialect {
   let name = "ml_program";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::ml_program";
   let description = [{
     The MLProgram dialect contains structural operations and types for
diff --git a/mlir/include/mlir/Dialect/MPI/IR/MPI.td 
b/mlir/include/mlir/Dialect/MPI/IR/MPI.td
index 29fd14b3f35f07..ba422273d5354d 100644
--- a/mlir/include/mlir/Dialect/MPI/IR/MPI.td
+++ b/mlir/include/mlir/Dialect/MPI/IR/MPI.td
@@ -15,7 +15,6 @@ include "mlir/IR/EnumAttr.td"
 
 def MPI_Dialect : Dialect {
   let name = "mpi";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::mpi";
   let description = [{
     This dialect models the Message Passing Interface (MPI), version 
diff --git a/mlir/include/mlir/Dialect/Math/IR/MathBase.td 
b/mlir/include/mlir/Dialect/Math/IR/MathBase.td
index 162284a1d8363a..19fb39d9fd51d5 100644
--- a/mlir/include/mlir/Dialect/Math/IR/MathBase.td
+++ b/mlir/include/mlir/Dialect/Math/IR/MathBase.td
@@ -10,7 +10,6 @@
 include "mlir/IR/OpBase.td"
 def Math_Dialect : Dialect {
   let name = "math";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::math";
   let description = [{
     The math dialect is intended to hold mathematical operations on integer and
diff --git a/mlir/include/mlir/Dialect/MemRef/IR/MemRefBase.td 
b/mlir/include/mlir/Dialect/MemRef/IR/MemRefBase.td
index 82bd30fedf3641..20dd45272898dc 100644
--- a/mlir/include/mlir/Dialect/MemRef/IR/MemRefBase.td
+++ b/mlir/include/mlir/Dialect/MemRef/IR/MemRefBase.td
@@ -14,7 +14,6 @@ include "mlir/IR/OpBase.td"
 def MemRef_Dialect : Dialect {
   let name = "memref";
   let cppNamespace = "::mlir::memref";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let description = [{
     The `memref` dialect is intended to hold core memref creation and
     manipulation ops, which are not strongly associated with any particular
diff --git a/mlir/include/mlir/Dialect/NVGPU/IR/NVGPU.td 
b/mlir/include/mlir/Dialect/NVGPU/IR/NVGPU.td
index d43a8c38fd1e01..1c0d7bd1113ea6 100644
--- a/mlir/include/mlir/Dialect/NVGPU/IR/NVGPU.td
+++ b/mlir/include/mlir/Dialect/NVGPU/IR/NVGPU.td
@@ -30,7 +30,6 @@ def NVGPU_Dialect : Dialect {
 
   let useDefaultTypePrinterParser = 1;
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
   
   let extraClassDeclaration = [{
     /// Return true if the given MemRefType has an integer address
diff --git a/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td 
b/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td
index 675574547cebc3..5810759c54298d 100644
--- a/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td
+++ b/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td
@@ -19,7 +19,6 @@ include "mlir/IR/AttrTypeBase.td"
 def OpenACC_Dialect : Dialect {
   let name = "acc";
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
   let useDefaultTypePrinterParser = 1;
   let cppNamespace = "::mlir::acc";
   let dependentDialects = ["::mlir::memref::MemRefDialect",
diff --git a/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.td 
b/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.td
index dbc851a5e297c2..2dfee7120e82af 100644
--- a/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.td
+++ b/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.td
@@ -16,7 +16,6 @@ def OpenMP_Dialect : Dialect {
   let cppNamespace = "::mlir::omp";
   let dependentDialects = ["::mlir::LLVM::LLVMDialect, 
::mlir::func::FuncDialect"];
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
   let useDefaultTypePrinterParser = 1;
   let hasOperationAttrVerify = 1;
 }
diff --git a/mlir/include/mlir/Dialect/PDL/IR/PDLDialect.td 
b/mlir/include/mlir/Dialect/PDL/IR/PDLDialect.td
index b98940560ef52c..d405bec26634c5 100644
--- a/mlir/include/mlir/Dialect/PDL/IR/PDLDialect.td
+++ b/mlir/include/mlir/Dialect/PDL/IR/PDLDialect.td
@@ -63,7 +63,6 @@ def PDL_Dialect : Dialect {
   }];
 
   let name = "pdl";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::pdl";
 
   let useDefaultTypePrinterParser = 1;
diff --git a/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td 
b/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
index 752ba8e3c4e975..d60cd326a79560 100644
--- a/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
+++ b/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
@@ -36,7 +36,6 @@ def PDLInterp_Dialect : Dialect {
   }];
 
   let name = "pdl_interp";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::pdl_interp";
   let dependentDialects = ["pdl::PDLDialect"];
   let extraClassDeclaration = [{
diff --git a/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td 
b/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td
index bf1f1a3c89f5af..c98df5775195ad 100644
--- a/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td
+++ b/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td
@@ -20,7 +20,6 @@ include "mlir/IR/OpBase.td"
 
 def Ptr_Dialect : Dialect {
   let name = "ptr";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let summary = "Pointer dialect";
   let description = [{
     The pointer dialect provides types and operations for representing and
diff --git a/mlir/include/mlir/Dialect/Quant/IR/QuantBase.td 
b/mlir/include/mlir/Dialect/Quant/IR/QuantBase.td
index f11717f835f9b0..b129e4b57e3535 100644
--- a/mlir/include/mlir/Dialect/Quant/IR/QuantBase.td
+++ b/mlir/include/mlir/Dialect/Quant/IR/QuantBase.td
@@ -17,7 +17,6 @@ include "mlir/IR/OpBase.td"
 
 def Quant_Dialect : Dialect {
   let name = "quant";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let description = [{
     The `quant` dialect offers a framework for defining and manipulating
     quantized values. Central to this framework is the `!quant.uniform` data
diff --git a/mlir/include/mlir/Dialect/SCF/IR/SCFOps.td 
b/mlir/include/mlir/Dialect/SCF/IR/SCFOps.td
index b0a34989b64338..31330be70ee2d9 100644
--- a/mlir/include/mlir/Dialect/SCF/IR/SCFOps.td
+++ b/mlir/include/mlir/Dialect/SCF/IR/SCFOps.td
@@ -27,7 +27,6 @@ include "mlir/Interfaces/ViewLikeInterface.td"
 def SCF_Dialect : Dialect {
   let name = "scf";
   let cppNamespace = "::mlir::scf";
-  let useStrictPropertiesInAssemblyFormat = 1;
 
   let description = [{
     The `scf` (structured control flow) dialect contains operations that
diff --git a/mlir/include/mlir/Dialect/SMT/IR/SMTDialect.td 
b/mlir/include/mlir/Dialect/SMT/IR/SMTDialect.td
index 4b33b07da30c13..00f170659946ef 100644
--- a/mlir/include/mlir/Dialect/SMT/IR/SMTDialect.td
+++ b/mlir/include/mlir/Dialect/SMT/IR/SMTDialect.td
@@ -13,7 +13,6 @@ include "mlir/IR/DialectBase.td"
 
 def SMTDialect : Dialect {
   let name = "smt";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let summary = "a dialect that models satisfiability modulo theories";
   let cppNamespace = "mlir::smt";
 
diff --git a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVBase.td 
b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVBase.td
index 47dfd6ece4f5a8..a8073d7c848d69 100644
--- a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVBase.td
+++ b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVBase.td
@@ -52,7 +52,6 @@ def SPIRV_Dialect : Dialect {
   let hasOperationAttrVerify = 1;
   let hasRegionArgAttrVerify = 1;
   let hasRegionResultAttrVerify = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 
   let extraClassDeclaration = [{
     void registerAttributes();
diff --git a/mlir/include/mlir/Dialect/Shape/IR/ShapeBase.td 
b/mlir/include/mlir/Dialect/Shape/IR/ShapeBase.td
index d03fb094312a23..9c0257954d3e87 100644
--- a/mlir/include/mlir/Dialect/Shape/IR/ShapeBase.td
+++ b/mlir/include/mlir/Dialect/Shape/IR/ShapeBase.td
@@ -22,7 +22,6 @@ include "mlir/IR/OpBase.td"
 
 def ShapeDialect : Dialect {
   let name = "shape";
-  let useStrictPropertiesInAssemblyFormat = 1;
 
   let summary = "Types and operations for shape dialect";
   let description = [{
diff --git a/mlir/include/mlir/Dialect/Shard/IR/ShardBase.td 
b/mlir/include/mlir/Dialect/Shard/IR/ShardBase.td
index c398e83f924fe9..84c426252f4ab5 100644
--- a/mlir/include/mlir/Dialect/Shard/IR/ShardBase.td
+++ b/mlir/include/mlir/Dialect/Shard/IR/ShardBase.td
@@ -21,7 +21,6 @@ include "mlir/IR/EnumAttr.td"
 
 def Shard_Dialect : Dialect {
   let name = "shard";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::shard";
 
   let description = [{
diff --git a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorBase.td 
b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorBase.td
index e29358c6aa5588..74e6783e260faf 100644
--- a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorBase.td
+++ b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorBase.td
@@ -91,7 +91,6 @@ def SparseTensor_Dialect : Dialect {
   let useDefaultAttributePrinterParser = 1;
   let useDefaultTypePrinterParser = 1;
   let hasConstantMaterializer = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 #endif // SPARSETENSOR_BASE
diff --git a/mlir/include/mlir/Dialect/Tensor/IR/TensorBase.td 
b/mlir/include/mlir/Dialect/Tensor/IR/TensorBase.td
index 900ad5f40830c0..9d0add92737f3c 100644
--- a/mlir/include/mlir/Dialect/Tensor/IR/TensorBase.td
+++ b/mlir/include/mlir/Dialect/Tensor/IR/TensorBase.td
@@ -13,7 +13,6 @@ include "mlir/IR/OpBase.td"
 
 def Tensor_Dialect : Dialect {
   let name = "tensor";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::tensor";
 
   let description = [{
diff --git a/mlir/include/mlir/Dialect/Tosa/IR/TosaOpBase.td 
b/mlir/include/mlir/Dialect/Tosa/IR/TosaOpBase.td
index 6a8056769316ae..fa0a1dbd60c461 100644
--- a/mlir/include/mlir/Dialect/Tosa/IR/TosaOpBase.td
+++ b/mlir/include/mlir/Dialect/Tosa/IR/TosaOpBase.td
@@ -53,7 +53,6 @@ def Tosa_Dialect : Dialect {
   let hasConstantMaterializer = 1;
   let useDefaultAttributePrinterParser = 1;
   let useDefaultTypePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 
//===----------------------------------------------------------------------===//
diff --git a/mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td 
b/mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td
index d53761074db21e..ce0ad30ad2c8c3 100644
--- a/mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td
+++ b/mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td
@@ -19,7 +19,6 @@ def Transform_Dialect : Dialect {
   let cppNamespace = "::mlir::transform";
 
   let hasOperationAttrVerify = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
   let extraClassDeclaration = [{
     /// Symbol name for the default entry point "named sequence".
     constexpr const static ::llvm::StringLiteral
diff --git a/mlir/include/mlir/Dialect/UB/IR/UBOps.td 
b/mlir/include/mlir/Dialect/UB/IR/UBOps.td
index 666301799256bc..1bff39add691e8 100644
--- a/mlir/include/mlir/Dialect/UB/IR/UBOps.td
+++ b/mlir/include/mlir/Dialect/UB/IR/UBOps.td
@@ -20,7 +20,6 @@ def UB_Dialect : Dialect {
 
   let hasConstantMaterializer = 1;
   let useDefaultAttributePrinterParser = 1;
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 
 // Base class for UB dialect attributes.
diff --git a/mlir/include/mlir/Dialect/Vector/IR/Vector.td 
b/mlir/include/mlir/Dialect/Vector/IR/Vector.td
index f5e76c168f3351..5125ae7c137178 100644
--- a/mlir/include/mlir/Dialect/Vector/IR/Vector.td
+++ b/mlir/include/mlir/Dialect/Vector/IR/Vector.td
@@ -18,7 +18,6 @@ include "mlir/IR/OpBase.td"
 def Vector_Dialect : Dialect {
   let name = "vector";
   let cppNamespace = "::mlir::vector";
-  let useStrictPropertiesInAssemblyFormat = 1;
 
   let useDefaultAttributePrinterParser = 1;
   let hasConstantMaterializer = 1;
diff --git a/mlir/include/mlir/Dialect/WasmSSA/IR/WasmSSABase.td 
b/mlir/include/mlir/Dialect/WasmSSA/IR/WasmSSABase.td
index 0e93fdd0609625..f2777a7b155edd 100644
--- a/mlir/include/mlir/Dialect/WasmSSA/IR/WasmSSABase.td
+++ b/mlir/include/mlir/Dialect/WasmSSA/IR/WasmSSABase.td
@@ -14,7 +14,6 @@ include "mlir/IR/OpBase.td"
 
 def WasmSSA_Dialect : Dialect {
   let name = "wasmssa";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::wasmssa";
   let description = [{
     The `wasmssa` dialect is intended to represent WebAssembly
diff --git a/mlir/include/mlir/Dialect/X86/X86.td 
b/mlir/include/mlir/Dialect/X86/X86.td
index 681887e894260c..193cbdfc1424ee 100644
--- a/mlir/include/mlir/Dialect/X86/X86.td
+++ b/mlir/include/mlir/Dialect/X86/X86.td
@@ -25,7 +25,6 @@ include "mlir/IR/BuiltinTypes.td"
 
 def X86_Dialect : Dialect {
   let name = "x86";
-  let useStrictPropertiesInAssemblyFormat = 1;
   let cppNamespace = "::mlir::x86";
 
   let useDefaultTypePrinterParser = 1;
diff --git a/mlir/include/mlir/Dialect/XeGPU/IR/XeGPUDialect.td 
b/mlir/include/mlir/Dialect/XeGPU/IR/XeGPUDialect.td
index 652cf18ade5802..b1490c7742a269 100644
--- a/mlir/include/mlir/Dialect/XeGPU/IR/XeGPUDialect.td
+++ b/mlir/include/mlir/Dialect/XeGPU/IR/XeGPUDialect.td
@@ -36,7 +36,6 @@ def XeGPU_Dialect : Dialect {
 
     let useDefaultTypePrinterParser = true;
     let useDefaultAttributePrinterParser = true;
-    let useStrictPropertiesInAssemblyFormat = 1;
 
     let extraClassDeclaration = [{
       /// Checks if the given memref type represents shared local memory (SLM).
diff --git a/mlir/include/mlir/IR/BuiltinDialect.td 
b/mlir/include/mlir/IR/BuiltinDialect.td
index 35ea65671a7f88..c770dd50f3622a 100644
--- a/mlir/include/mlir/IR/BuiltinDialect.td
+++ b/mlir/include/mlir/IR/BuiltinDialect.td
@@ -20,7 +20,6 @@ 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/DialectBase.td 
b/mlir/include/mlir/IR/DialectBase.td
index 3b41e841eb3adb..f79865483f550f 100644
--- a/mlir/include/mlir/IR/DialectBase.td
+++ b/mlir/include/mlir/IR/DialectBase.td
@@ -55,11 +55,13 @@ class Dialect {
   // dialect declaration.
   code extraClassDeclaration = "";
 
-  // If this dialect should require declarative parsers for property-backed
-  // operations to bind every inherent attribute and property directly in the
-  // custom assembly format, or otherwise cover them with `prop-dict`. This
-  // stricter mode is disabled by default for now.
-  bit useStrictPropertiesInAssemblyFormat = 0;
+  // Require declarative parsers for property-backed operations to bind every
+  // inherent attribute and property directly in the custom assembly format,
+  // or otherwise cover them with `prop-dict`.
+  // Deprecated: setting this to 0
+  // temporarily opts into legacy behavior that mixes inherent and discardable
+  // attributes in `attr-dict`.
+  bit useStrictPropertiesInAssemblyFormat = 1;
 
   // If this dialect overrides the hook for materializing constants.
   bit hasConstantMaterializer = 0;
diff --git a/mlir/test/lib/Dialect/Test/TestDialect.td 
b/mlir/test/lib/Dialect/Test/TestDialect.td
index 37a263f1d10b8b..ed0bedaced126d 100644
--- a/mlir/test/lib/Dialect/Test/TestDialect.td
+++ b/mlir/test/lib/Dialect/Test/TestDialect.td
@@ -13,6 +13,8 @@ include "mlir/IR/OpBase.td"
 
 def Test_Dialect : Dialect {
   let name = "test";
+  // Keep legacy assembly format coverage for test operations.
+  let useStrictPropertiesInAssemblyFormat = 0;
   let cppNamespace = "::test";
   let hasCanonicalizer = 1;
   let hasConstantMaterializer = 1;
diff --git a/mlir/test/mlir-tblgen/op-format-invalid.td 
b/mlir/test/mlir-tblgen/op-format-invalid.td
index c13bbedce37856..dc0d1688cc8ec6 100644
--- a/mlir/test/mlir-tblgen/op-format-invalid.td
+++ b/mlir/test/mlir-tblgen/op-format-invalid.td
@@ -8,10 +8,11 @@ include "mlir/Interfaces/InferTypeOpInterface.td"
 
 def TestDialect : Dialect {
   let name = "test";
+  // Exercise the legacy assembly format behavior.
+  let useStrictPropertiesInAssemblyFormat = 0;
 }
 def TestStrictPropertiesDialect : Dialect {
   let name = "test_strict_properties";
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 class TestFormat_Op<string fmt, list<Trait> traits = []>
     : Op<TestDialect, "format_op", traits> {
diff --git a/mlir/test/mlir-tblgen/op-format.td 
b/mlir/test/mlir-tblgen/op-format.td
index 54add551c1f189..f98632886449d1 100644
--- a/mlir/test/mlir-tblgen/op-format.td
+++ b/mlir/test/mlir-tblgen/op-format.td
@@ -6,10 +6,11 @@ include "mlir/IR/EnumAttr.td"
 
 def TestDialect : Dialect {
   let name = "test";
+  // Exercise the legacy assembly format behavior.
+  let useStrictPropertiesInAssemblyFormat = 0;
 }
 def TestStrictPropertiesDialect : Dialect {
   let name = "test_strict_properties";
-  let useStrictPropertiesInAssemblyFormat = 1;
 }
 class TestFormat_Op<string fmt, list<Trait> traits = []>
     : Op<TestDialect, "format_op", traits> {

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to