From d30727fb6c15650dcd1432d5501e2d37f3fd5dda Mon Sep 17 00:00:00 2001 From: rkayaith Date: Sun, 23 Oct 2022 15:35:18 -0400 Subject: [PATCH] [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 --- .../mlir/Tools/mlir-translate/Translation.h | 3 ++ .../lib/Tools/mlir-translate/MlirTranslateMain.cpp | 1 + mlir/lib/Tools/mlir-translate/Translation.cpp | 49 ++++++++++++++-------- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/mlir/include/mlir/Tools/mlir-translate/Translation.h b/mlir/include/mlir/Tools/mlir-translate/Translation.h index 4c090b7..d3cd817 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 { 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 a8dc1df..ef2545b 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 9e97e1b..1eb285e 100644 --- a/mlir/lib/Tools/mlir-translate/Translation.cpp +++ b/mlir/lib/Tools/mlir-translate/Translation.cpp @@ -22,6 +22,21 @@ using namespace mlir; //===----------------------------------------------------------------------===// +// Translation CommandLine Options +//===----------------------------------------------------------------------===// + +struct TranslationOptions { + llvm::cl::opt noImplicitModule{ + "no-implicit-module", + llvm::cl::desc("Disable the parsing of an implicit top-level module op"), + llvm::cl::init(false)}; +}; + +static llvm::ManagedStatic clOptions; + +void mlir::registerTranslationCLOptions() { *clOptions; } + +//===----------------------------------------------------------------------===// // Translation Registry //===----------------------------------------------------------------------===// @@ -103,24 +118,22 @@ TranslateFromMLIRRegistration::TranslateFromMLIRRegistration( const TranslateFromMLIRFunction &function, const std::function &dialectRegistration) { - static llvm::cl::opt 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 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 op = + parseSourceFileForTool(sourceMgr, context, implicitModule); + if (!op || failed(verify(*op))) + return failure(); + return function(op.get(), output); + }); } //===----------------------------------------------------------------------===// -- 2.7.4