[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
This commit is contained in:
rkayaith 2022-11-03 14:29:44 -04:00
parent e4889c0a04
commit 40e7741d2d
4 changed files with 19 additions and 4 deletions

View 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

View 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);

View 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();

View 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