[Mlir-commits] [mlir] d30727f - [mlir][Translation] Make commandline option registration optional

llvmlistbot at llvm.org llvmlistbot at llvm.org
Mon Oct 24 11:40:11 PDT 2022


Author: rkayaith
Date: 2022-10-24T14:40:07-04:00
New Revision: d30727fb6c15650dcd1432d5501e2d37f3fd5dda

URL: https://github.com/llvm/llvm-project/commit/d30727fb6c15650dcd1432d5501e2d37f3fd5dda
DIFF: https://github.com/llvm/llvm-project/commit/d30727fb6c15650dcd1432d5501e2d37f3fd5dda.diff

LOG: [mlir][Translation] Make commandline option registration optional

This moves the commandline option registration into its own function, so
that users can register translations without registering the options.

Reviewed By: cota

Differential Revision: https://reviews.llvm.org/D136561

Added: 
    

Modified: 
    mlir/include/mlir/Tools/mlir-translate/Translation.h
    mlir/lib/Tools/mlir-translate/MlirTranslateMain.cpp
    mlir/lib/Tools/mlir-translate/Translation.cpp

Removed: 
    


################################################################################
diff  --git a/mlir/include/mlir/Tools/mlir-translate/Translation.h b/mlir/include/mlir/Tools/mlir-translate/Translation.h
index 4c090b7f323f7..d3cd817d3e7f0 100644
--- a/mlir/include/mlir/Tools/mlir-translate/Translation.h
+++ b/mlir/include/mlir/Tools/mlir-translate/Translation.h
@@ -106,6 +106,9 @@ struct TranslationParser : public llvm::cl::parser<const TranslateFunction *> {
                        size_t globalWidth) const override;
 };
 
+/// Register command-line options used by the translation registry.
+void registerTranslationCLOptions();
+
 } // namespace mlir
 
 #endif // MLIR_TOOLS_MLIRTRANSLATE_TRANSLATION_H

diff  --git a/mlir/lib/Tools/mlir-translate/MlirTranslateMain.cpp b/mlir/lib/Tools/mlir-translate/MlirTranslateMain.cpp
index a8dc1df3e857f..ef2545bd46beb 100644
--- a/mlir/lib/Tools/mlir-translate/MlirTranslateMain.cpp
+++ b/mlir/lib/Tools/mlir-translate/MlirTranslateMain.cpp
@@ -61,6 +61,7 @@ LogicalResult mlir::mlirTranslateMain(int argc, char **argv,
                            llvm::cl::Required);
   registerAsmPrinterCLOptions();
   registerMLIRContextCLOptions();
+  registerTranslationCLOptions();
   llvm::cl::ParseCommandLineOptions(argc, argv, toolName);
 
   std::string errorMessage;

diff  --git a/mlir/lib/Tools/mlir-translate/Translation.cpp b/mlir/lib/Tools/mlir-translate/Translation.cpp
index 9e97e1b841f3d..1eb285e8f798a 100644
--- a/mlir/lib/Tools/mlir-translate/Translation.cpp
+++ b/mlir/lib/Tools/mlir-translate/Translation.cpp
@@ -21,6 +21,21 @@
 
 using namespace mlir;
 
+//===----------------------------------------------------------------------===//
+// Translation CommandLine Options
+//===----------------------------------------------------------------------===//
+
+struct TranslationOptions {
+  llvm::cl::opt<bool> noImplicitModule{
+      "no-implicit-module",
+      llvm::cl::desc("Disable the parsing of an implicit top-level module op"),
+      llvm::cl::init(false)};
+};
+
+static llvm::ManagedStatic<TranslationOptions> clOptions;
+
+void mlir::registerTranslationCLOptions() { *clOptions; }
+
 //===----------------------------------------------------------------------===//
 // Translation Registry
 //===----------------------------------------------------------------------===//
@@ -103,24 +118,22 @@ TranslateFromMLIRRegistration::TranslateFromMLIRRegistration(
     const TranslateFromMLIRFunction &function,
     const std::function<void(DialectRegistry &)> &dialectRegistration) {
 
-  static llvm::cl::opt<bool> noImplicitModule{
-      "no-implicit-module",
-      llvm::cl::desc("Disable the parsing of an implicit top-level module op"),
-      llvm::cl::init(false)};
-
-  registerTranslation(name, description,
-                      [function, dialectRegistration](
-                          llvm::SourceMgr &sourceMgr, raw_ostream &output,
-                          MLIRContext *context) {
-                        DialectRegistry registry;
-                        dialectRegistration(registry);
-                        context->appendDialectRegistry(registry);
-                        OwningOpRef<Operation *> op = parseSourceFileForTool(
-                            sourceMgr, context, !noImplicitModule);
-                        if (!op || failed(verify(*op)))
-                          return failure();
-                        return function(op.get(), output);
-                      });
+  registerTranslation(
+      name, description,
+      [function, dialectRegistration](llvm::SourceMgr &sourceMgr,
+                                      raw_ostream &output,
+                                      MLIRContext *context) {
+        DialectRegistry registry;
+        dialectRegistration(registry);
+        context->appendDialectRegistry(registry);
+        bool implicitModule =
+            (!clOptions.isConstructed() || !clOptions->noImplicitModule);
+        OwningOpRef<Operation *> op =
+            parseSourceFileForTool(sourceMgr, context, implicitModule);
+        if (!op || failed(verify(*op)))
+          return failure();
+        return function(op.get(), output);
+      });
 }
 
 //===----------------------------------------------------------------------===//


        


More information about the Mlir-commits mailing list