[mlir-opt] Add '-p' as an alias for '-pass-pipeline'
authorrkayaith <rkayaith@gmail.com>
Thu, 3 Nov 2022 18:29:44 +0000 (14:29 -0400)
committerrkayaith <rkayaith@gmail.com>
Tue, 8 Nov 2022 20:17:27 +0000 (15:17 -0500)
The pipeline strings have been getting more verbose over time, adding an
alias for the option should help improve the ergonomics a bit.

Reviewed By: rriddle

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

mlir/include/mlir/Pass/PassRegistry.h
mlir/lib/Pass/PassRegistry.cpp
mlir/lib/Tools/mlir-opt/MlirOptMain.cpp
mlir/test/mlir-opt/commandline.mlir

index 9769226..b0731f1 100644 (file)
@@ -236,7 +236,9 @@ struct PassPipelineCLParserImpl;
 class PassPipelineCLParser {
 public:
   /// Construct a pass pipeline parser with the given command line description.
+  /// Optionally registers an alias for the `pass-pipeline` option.
   PassPipelineCLParser(StringRef arg, StringRef description);
+  PassPipelineCLParser(StringRef arg, StringRef description, StringRef alias);
   ~PassPipelineCLParser();
 
   /// Returns true if this parser contains any valid options to add.
@@ -257,6 +259,7 @@ private:
   std::unique_ptr<detail::PassPipelineCLParserImpl> impl;
 
   llvm::cl::opt<std::string> passPipeline;
+  Optional<llvm::cl::alias> passPipelineAlias;
 };
 
 /// This class implements a command-line parser specifically for MLIR pass
index 0ddb2e9..cc9eab3 100644 (file)
@@ -764,7 +764,7 @@ namespace {
 
 /// The name for the command line option used for parsing the textual pass
 /// pipeline.
-static constexpr StringLiteral passPipelineArg = "pass-pipeline";
+#define PASS_PIPELINE_ARG "pass-pipeline"
 
 /// Adds command line option for each registered pass or pass pipeline, as well
 /// as textual pass pipelines.
@@ -896,8 +896,17 @@ PassPipelineCLParser::PassPipelineCLParser(StringRef arg, StringRef description)
     : impl(std::make_unique<detail::PassPipelineCLParserImpl>(
           arg, description, /*passNamesOnly=*/false)),
       passPipeline(
-          StringRef(passPipelineArg),
+          PASS_PIPELINE_ARG,
           llvm::cl::desc("Textual description of the pass pipeline to run")) {}
+
+PassPipelineCLParser::PassPipelineCLParser(StringRef arg, StringRef description,
+                                           StringRef alias)
+    : PassPipelineCLParser(arg, description) {
+  passPipelineAlias.emplace(alias,
+                            llvm::cl::desc("Alias for --" PASS_PIPELINE_ARG),
+                            llvm::cl::aliasopt(passPipeline));
+}
+
 PassPipelineCLParser::~PassPipelineCLParser() = default;
 
 /// Returns true if this parser contains any valid options to add.
@@ -919,7 +928,7 @@ LogicalResult PassPipelineCLParser::addToPipeline(
   if (passPipeline.getNumOccurrences()) {
     if (impl->passList.getNumOccurrences())
       return errorHandler(
-          "'-" + passPipelineArg +
+          "'-" PASS_PIPELINE_ARG
           "' option can't be used with individual pass options");
     std::string errMsg;
     llvm::raw_string_ostream os(errMsg);
index 7215e5f..d75bff3 100644 (file)
@@ -269,7 +269,7 @@ LogicalResult mlir::MlirOptMain(int argc, char **argv, llvm::StringRef toolName,
   registerPassManagerCLOptions();
   registerDefaultTimingManagerCLOptions();
   DebugCounter::registerCLOptions();
-  PassPipelineCLParser passPipeline("", "Compiler passes to run");
+  PassPipelineCLParser passPipeline("", "Compiler passes to run", "p");
 
   // Build the list of dialects as a header for the --help message.
   std::string helpHeader = (toolName + "\nAvailable Dialects: ").str();
index 1badf90..bdcdf9d 100644 (file)
@@ -40,3 +40,6 @@
 // CHECK-NEXT: transform
 // CHECK-NEXT: vector
 // CHECK-NEXT: x86vector
+
+// RUN: mlir-opt --help-hidden | FileCheck %s -check-prefix=CHECK-HELP
+// CHECK-HELP: -p - Alias for --pass-pipeline