[mlir] Make MLIRContext::getOrLoadDialect(StringRef, TypeID, ...) public
authormfehr <mathieu.fehr@gmail.com>
Thu, 21 Jan 2021 00:29:51 +0000 (00:29 +0000)
committerMehdi Amini <joker.eph@gmail.com>
Thu, 21 Jan 2021 00:29:58 +0000 (00:29 +0000)
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

mlir/include/mlir/IR/MLIRContext.h

index e460064..4751f00 100644 (file)
@@ -156,17 +156,19 @@ public:
   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;
 };