[Mlir-commits] [mlir] [mlir][ODS] Include headers of used traits in generated declarations (PR #236155)
Mehdi Amini
llvmlistbot at llvm.org
Wed Oct 28 04:14:31 PDT 2026
================
@@ -0,0 +1,93 @@
+// RUN: mlir-tblgen -gen-op-decls -I %S/../../include %s | FileCheck %s
+
+include "mlir/IR/OpBase.td"
+include "mlir/Interfaces/SideEffectInterfaceBase.td"
+
+def Test_Dialect : Dialect {
+ let name = "test";
+ let cppNamespace = "::test";
+}
+
+def NoHeaderTrait : NativeOpTrait<"NoHeaderTrait">;
+def OpTraitA : NativeOpTrait<"OpTraitA"> {
+ let declaredIn = ["test/OpTraitA.h"];
+}
+// A trait can be declared across several headers.
+def OpTraitB : NativeOpTrait<"OpTraitB"> {
+ let declaredIn = ["test/OpTraitB.h", "test/OpTraitBUtils.h"];
+}
+
+def BaseOpInterface : OpInterface<"BaseOpInterface"> {
+ let cppNamespace = "::test";
+ let declaredIn = ["test/BaseOpInterface.h"];
+}
+def DerivedOpInterface : OpInterface<"DerivedOpInterface", [BaseOpInterface]> {
+ let cppNamespace = "::test";
+ let declaredIn = ["test/DerivedOpInterface.h"];
+}
+def DeclaredMethodsOpInterface : OpInterface<"DeclaredMethodsOpInterface"> {
+ let cppNamespace = "::test";
+ let declaredIn = ["test/DeclaredMethodsOpInterface.h"];
+ let methods = [InterfaceMethod<"", "void", "foo">];
+}
+
+def TraitEffectInterface
+ : EffectOpInterfaceBase<"TraitEffectOpInterface", "::test::TraitEffect"> {
+ let cppNamespace = "::test";
+ let declaredIn = ["test/TraitEffects.h"];
+}
+def DecoratorEffectInterface
+ : EffectOpInterfaceBase<"DecoratorEffectOpInterface",
+ "::test::DecoratorEffect"> {
+ let cppNamespace = "::test";
+ let declaredIn = ["test/DecoratorEffects.h"];
+}
+
+// The headers of all ops are emitted once, sorted, at the start of the class
----------------
joker-eph wrote:
```suggestion
// The headers of all used traits are emitted once, sorted, before the start of the class
```
https://github.com/llvm/llvm-project/pull/236155
More information about the Mlir-commits
mailing list