[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