From 40e7741d2db089b9e43b3537163a8675ff74de70 Mon Sep 17 00:00:00 2001 From: rkayaith Date: Thu, 3 Nov 2022 14:29:44 -0400 Subject: [PATCH] [mlir-opt] Add '-p' as an alias for '-pass-pipeline' 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 | 3 +++ mlir/lib/Pass/PassRegistry.cpp | 15 ++++++++++++--- mlir/lib/Tools/mlir-opt/MlirOptMain.cpp | 2 +- mlir/test/mlir-opt/commandline.mlir | 3 +++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/mlir/include/mlir/Pass/PassRegistry.h b/mlir/include/mlir/Pass/PassRegistry.h index 9769226..b0731f1 100644 --- a/mlir/include/mlir/Pass/PassRegistry.h +++ b/mlir/include/mlir/Pass/PassRegistry.h @@ -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 impl; llvm::cl::opt passPipeline; + Optional passPipelineAlias; }; /// This class implements a command-line parser specifically for MLIR pass diff --git a/mlir/lib/Pass/PassRegistry.cpp b/mlir/lib/Pass/PassRegistry.cpp index 0ddb2e9..cc9eab3 100644 --- a/mlir/lib/Pass/PassRegistry.cpp +++ b/mlir/lib/Pass/PassRegistry.cpp @@ -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( 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); diff --git a/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp b/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp index 7215e5f..d75bff3 100644 --- a/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp +++ b/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp @@ -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(); diff --git a/mlir/test/mlir-opt/commandline.mlir b/mlir/test/mlir-opt/commandline.mlir index 1badf90..bdcdf9d 100644 --- a/mlir/test/mlir-opt/commandline.mlir +++ b/mlir/test/mlir-opt/commandline.mlir @@ -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 -- 2.7.4