[all-commits] [llvm/llvm-project] edae8f: [mlir] Make `classof` substitution in interface us...
Markus Böck via All-commits
all-commits at lists.llvm.org
Thu Sep 7 00:47:11 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: edae8f6ce29a980d83761f59f81b88167a0fd815
https://github.com/llvm/llvm-project/commit/edae8f6ce29a980d83761f59f81b88167a0fd815
Author: Markus Böck <markus.boeck02 at gmail.com>
Date: 2023-09-07 (Thu, 07 Sep 2023)
Changed paths:
M mlir/include/mlir/IR/Interfaces.td
M mlir/test/lib/Dialect/Test/TestInterfaces.td
M mlir/test/lib/Dialect/Test/TestOps.td
M mlir/test/mlir-tblgen/op-interface.td
M mlir/tools/mlir-tblgen/OpInterfacesGen.cpp
M mlir/unittests/IR/InterfaceTest.cpp
Log Message:
-----------
[mlir] Make `classof` substitution in interface use an instance (#65492)
The substitution supported by `extraClassOf` is currently limited to
only the base instance, i.e. `Operation*`, `Type` or `Attribute`, which
limits the kind of checks you can perform in the `classof`
implementation.
Since prior to the user code, the interface concept is fetched, we can
use it to construct an instance of the interface, allowing use of its
methods in the `classof` check.
Since an instance of the interface allows access to the base class
methods through the `->` operator, I've gone ahead and replaced the
substitution of `$_op/$_type/$_attr` with an interface instance. This is
also consistent with `extraSharedClassDeclaration` and other methods
created in the interface class which do the same.
More information about the All-commits
mailing list