Skip to content

Commit 5e47fe1

Browse files
joker-ephtru
authored andcommitted
Fix ODS verifier emission for DerivedAttr when Properties are enabled
Differential Revision: https://reviews.llvm.org/D158679
1 parent a95298a commit 5e47fe1

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
@@ -868,10 +868,12 @@ while (true) {{
868868
if (useProperties) {
869869
for (const std::pair<StringRef, AttributeMetadata> &it :
870870
emitHelper.getAttrMetadata()) {
871+
const AttributeMetadata &metadata = it.second;
872+
if (metadata.constraint && metadata.constraint->isDerivedAttr())
873+
continue;
871874
body << formatv(
872875
"auto tblgen_{0} = getProperties().{0}; (void)tblgen_{0};\n",
873876
it.first);
874-
const AttributeMetadata &metadata = it.second;
875877
if (metadata.isRequired)
876878
body << formatv(
877879
"if (!tblgen_{0}) return {1}\"requires attribute '{0}'\");\n",

0 commit comments

Comments
 (0)