Skip to content

Commit

Permalink
[mlir] Make MLIRContext::getOrLoadDialect(StringRef, TypeID, ...) public
Browse files Browse the repository at this point in the history
Having this function in a public scope is helpful to register dialects that are
defined at runtime, and thus that need a runtime-defined TypeID.

Also, a similar function in DialectRegistry, insert(TypeID, StringRef, ...), has
a public scope.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D95091
  • Loading branch information
math-fehr authored and joker-eph committed Jan 21, 2021
1 parent c78219f commit 8a7ff73
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions mlir/include/mlir/IR/MLIRContext.h
Expand Up @@ -156,17 +156,19 @@ class MLIRContext {
void enterMultiThreadedExecution();
void exitMultiThreadedExecution();

private:
const std::unique_ptr<MLIRContextImpl> impl;

/// Get a dialect for the provided namespace and TypeID: abort the program if
/// a dialect exist for this namespace with different TypeID. If a dialect has
/// not been loaded for this namespace/TypeID yet, use the provided ctor to
/// create one on the fly and load it. Returns a pointer to the dialect owned
/// by the context.
/// The use of this method is in general discouraged in favor of
/// 'getOrLoadDialect<DialectClass>()'.
Dialect *getOrLoadDialect(StringRef dialectNamespace, TypeID dialectID,
function_ref<std::unique_ptr<Dialect>()> ctor);

private:
const std::unique_ptr<MLIRContextImpl> impl;

MLIRContext(const MLIRContext &) = delete;
void operator=(const MLIRContext &) = delete;
};
Expand Down

0 comments on commit 8a7ff73

Please sign in to comment.