[flang-commits] [flang] [mlir] [mlir] Support DialectRegistry extension comparison (PR #101119)
Nikhil Kalra via flang-commits
flang-commits at lists.llvm.org
Thu Aug 1 08:47:14 PDT 2024
================
@@ -206,47 +207,47 @@ class DialectRegistry {
void applyExtensions(MLIRContext *ctx) const;
/// Add the given extension to the registry.
- void addExtension(std::unique_ptr<DialectExtensionBase> extension) {
- extensions.push_back(std::move(extension));
+ void addExtension(TypeID extensionID,
+ std::unique_ptr<DialectExtensionBase> extension) {
+ extensions.emplace_back(extensionID, std::move(extension));
}
/// Add the given extensions to the registry.
template <typename... ExtensionsT>
void addExtensions() {
- (addExtension(std::make_unique<ExtensionsT>()), ...);
+ (addExtension(TypeID::get<ExtensionsT>(), std::make_unique<ExtensionsT>()),
+ ...);
}
/// Add an extension function that requires the given dialects.
/// Note: This bare functor overload is provided in addition to the
/// std::function variant to enable dialect type deduction, e.g.:
- /// registry.addExtension(+[](MLIRContext *ctx, MyDialect *dialect) { ... })
+ /// registry.addExtension(+[](MLIRContext *ctx, MyDialect *dialect) {
+ /// ... })
///
/// is equivalent to:
/// registry.addExtension<MyDialect>(
/// [](MLIRContext *ctx, MyDialect *dialect){ ... }
/// )
template <typename... DialectsT>
void addExtension(void (*extensionFn)(MLIRContext *, DialectsT *...)) {
- addExtension<DialectsT...>(
- std::function<void(MLIRContext *, DialectsT * ...)>(extensionFn));
- }
- template <typename... DialectsT>
- void
----------------
nikalra wrote:
We'll have to remove the `std::function` overload of `addExtension` so we can use the underlying function pointer as the TypeID, but the lost functionality can be achieved with a `DialectExtension` subclass if needed.
https://github.com/llvm/llvm-project/pull/101119
More information about the flang-commits
mailing list