Skip to content

Commit aa33561

Browse files
committed
Fix ODS verifier emission for DerivedAttr when Properties are enabled
Differential Revision: https://reviews.llvm.org/D158679
1 parent ad7e6e9 commit aa33561

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

mlir/test/lib/Dialect/Test/TestOps.td

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,16 @@ def DerivedTypeAttrOp : TEST_Op<"derived_type_attr", []> {
264264
"$_builder.getI32IntegerAttr($_self)">;
265265
}
266266

267+
def TestPropOp : TEST_Op<"prop">,
268+
Arguments<(ins Variadic<Index>:$upperInits,
269+
I32ElementsAttr:$transforms)>,
270+
Results<(outs Variadic<AnyType>:$results)> {
271+
DerivedAttr upperLen = DerivedAttr<"uint32_t", [{
272+
return getUpperInits().size() / getTransforms().size();
273+
}], [{ $_builder.getI32IntegerAttr($_self) }]>;
274+
}
275+
276+
267277
def StringElementsAttrOp : TEST_Op<"string_elements_attr"> {
268278
let arguments = (ins
269279
StringElementsAttr:$scalar_string_attr

mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -875,10 +875,12 @@ while (true) {{
875875
if (useProperties) {
876876
for (const std::pair<StringRef, AttributeMetadata> &it :
877877
emitHelper.getAttrMetadata()) {
878+
const AttributeMetadata &metadata = it.second;
879+
if (metadata.constraint && metadata.constraint->isDerivedAttr())
880+
continue;
878881
body << formatv(
879882
"auto tblgen_{0} = getProperties().{0}; (void)tblgen_{0};\n",
880883
it.first);
881-
const AttributeMetadata &metadata = it.second;
882884
if (metadata.isRequired)
883885
body << formatv(
884886
"if (!tblgen_{0}) return {1}\"requires attribute '{0}'\");\n",

0 commit comments

Comments
 (0)