- Previously, we were only generating .h.inc files. We foresee the need to also generate implementations and this is a step towards that.
- Discussed in https://llvm.discourse.group/t/generating-cpp-inc-files-for-dialects/3732/2
- Deviates from the discussion above by generating a default destructor in the .cpp.inc file (and adding a tablegen bit that disables this in case if this is user provided). The Test dialect uses this feature but others appear not to.
- Generating the destructor started as a way to flush out the missing includes (produces a link error), but it is a strict improvement on its own that is worth doing (i.e. by emitting key methods in the .cpp file, we root vtables in one translation unit, which is a non-controversial improvement).
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
This looks great to me Stella, nice work. I don't have any additional comments on top of River's
mlir/include/mlir/IR/OpBase.td | ||
---|---|---|
272 | No: I added it because the test dialect does define its own destructor and I needed to support that (it appears to be the only one). Open to other ways to do this, but it seemed neighborly to leave the option open to folks who need it. |
Rename hasExplicitDestructor to hasNonDefaultDestructor (on a second read, this seemed like an improvement to me).
Rebase and fix standalone dialect template.
mlir/examples/standalone/lib/Standalone/StandaloneDialect.cpp | ||
---|---|---|
15 | This seems to have broken the standalone example for me. Is the standalone example tested? |
mlir/examples/standalone/lib/Standalone/StandaloneDialect.cpp | ||
---|---|---|
15 | It should be: is it broken at HEAD? |
This seems to have broken the standalone example for me. Is the standalone example tested?