[llvm] d919b73 - [NewPM] Print passes with params when using "opt -print-passes"
Bjorn Pettersson via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 22 00:19:50 PDT 2021
Author: Bjorn Pettersson
Date: 2021-06-22T09:01:38+02:00
New Revision: d919b73564fa79b5dbd6352120a23998f27a7811
URL: https://github.com/llvm/llvm-project/commit/d919b73564fa79b5dbd6352120a23998f27a7811
DIFF: https://github.com/llvm/llvm-project/commit/d919b73564fa79b5dbd6352120a23998f27a7811.diff
LOG: [NewPM] Print passes with params when using "opt -print-passes"
Make sure we also print passes with params when using "opt -print-passes".
Differential Revision: https://reviews.llvm.org/D104625
Added:
Modified:
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassRegistry.def
llvm/test/Other/print-passes.ll
Removed:
################################################################################
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index cd1a5a68f92d5..7f975eb7a2b55 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -2407,7 +2407,7 @@ static bool isFunctionPassName(StringRef Name, CallbacksT &Callbacks) {
#define FUNCTION_PASS(NAME, CREATE_PASS) \
if (Name == NAME) \
return true;
-#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) \
return true;
#define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \
@@ -2431,7 +2431,7 @@ static bool isLoopPassName(StringRef Name, CallbacksT &Callbacks) {
#define LOOP_PASS(NAME, CREATE_PASS) \
if (Name == NAME) \
return true;
-#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) \
return true;
#define LOOP_ANALYSIS(NAME, CREATE_PASS) \
@@ -2621,7 +2621,7 @@ Error PassBuilder::parseModulePass(ModulePassManager &MPM,
MPM.addPass(createModuleToFunctionPassAdaptor(CREATE_PASS)); \
return Error::success(); \
}
-#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) { \
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
@@ -2635,7 +2635,7 @@ Error PassBuilder::parseModulePass(ModulePassManager &MPM,
createFunctionToLoopPassAdaptor(CREATE_PASS, false, false))); \
return Error::success(); \
}
-#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) { \
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
@@ -2728,7 +2728,7 @@ Error PassBuilder::parseCGSCCPass(CGSCCPassManager &CGPM,
CGPM.addPass(createCGSCCToFunctionPassAdaptor(CREATE_PASS)); \
return Error::success(); \
}
-#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) { \
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
@@ -2742,7 +2742,7 @@ Error PassBuilder::parseCGSCCPass(CGSCCPassManager &CGPM,
createFunctionToLoopPassAdaptor(CREATE_PASS, false, false))); \
return Error::success(); \
}
-#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) { \
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
@@ -2813,7 +2813,7 @@ Error PassBuilder::parseFunctionPass(FunctionPassManager &FPM,
FPM.addPass(CREATE_PASS); \
return Error::success(); \
}
-#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) { \
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
@@ -2842,7 +2842,7 @@ Error PassBuilder::parseFunctionPass(FunctionPassManager &FPM,
FPM.addPass(createFunctionToLoopPassAdaptor(CREATE_PASS, false, false)); \
return Error::success(); \
}
-#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) { \
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
@@ -2900,7 +2900,7 @@ Error PassBuilder::parseLoopPass(LoopPassManager &LPM,
LPM.addPass(CREATE_PASS); \
return Error::success(); \
}
-#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER) \
+#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
if (checkParametrizedPassName(Name, NAME)) { \
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
@@ -3160,6 +3160,10 @@ bool PassBuilder::isAnalysisPassName(StringRef PassName) {
static void printPassName(StringRef PassName, raw_ostream &OS) {
OS << " " << PassName << "\n";
}
+static void printPassName(StringRef PassName, StringRef Params,
+ raw_ostream &OS) {
+ OS << " " << PassName << "<" << Params << ">\n";
+}
void PassBuilder::printPassNames(raw_ostream &OS) {
// TODO: print pass descriptions when they are available
@@ -3188,6 +3192,11 @@ void PassBuilder::printPassNames(raw_ostream &OS) {
#define FUNCTION_PASS(NAME, CREATE_PASS) printPassName(NAME, OS);
#include "PassRegistry.def"
+ OS << "Function passes with params:\n";
+#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
+ printPassName(NAME, PARAMS, OS);
+#include "PassRegistry.def"
+
OS << "Function analyses:\n";
#define FUNCTION_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS);
#include "PassRegistry.def"
@@ -3200,6 +3209,11 @@ void PassBuilder::printPassNames(raw_ostream &OS) {
#define LOOP_PASS(NAME, CREATE_PASS) printPassName(NAME, OS);
#include "PassRegistry.def"
+ OS << "Loop passes with params:\n";
+#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS) \
+ printPassName(NAME, PARAMS, OS);
+#include "PassRegistry.def"
+
OS << "Loop analyses:\n";
#define LOOP_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS);
#include "PassRegistry.def"
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
index da944958b8682..2a639ea921695 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -331,43 +331,65 @@ FUNCTION_PASS("memprof", MemProfilerPass())
#undef FUNCTION_PASS
#ifndef FUNCTION_PASS_WITH_PARAMS
-#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER)
+#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS)
#endif
FUNCTION_PASS_WITH_PARAMS("loop-unroll",
[](LoopUnrollOptions Opts) {
return LoopUnrollPass(Opts);
},
- parseLoopUnrollOptions)
+ parseLoopUnrollOptions,
+ "O0;O1;O2;O3;full-unroll-max=N;"
+ "no-partial;partial;"
+ "no-peeling;peeling;"
+ "no-profile-peeling;profile-peeling;"
+ "no-runtime;runtime;"
+ "no-upperbound;upperbound")
FUNCTION_PASS_WITH_PARAMS("msan",
[](MemorySanitizerOptions Opts) {
return MemorySanitizerPass(Opts);
},
- parseMSanPassOptions)
+ parseMSanPassOptions,
+ "recover;kernel;track-origins=N")
FUNCTION_PASS_WITH_PARAMS("simplify-cfg",
[](SimplifyCFGOptions Opts) {
return SimplifyCFGPass(Opts);
},
- parseSimplifyCFGOptions)
+ parseSimplifyCFGOptions,
+ "no-forward-switch-cond;forward-switch-cond;"
+ "no-switch-to-lookup;switch-to-lookup;"
+ "no-keep-loops;keep-loops;"
+ "no-hoist-common-insts;hoist-common-insts;"
+ "no-sink-common-insts;sink-common-insts;"
+ "bonus-inst-threshold=N"
+ )
FUNCTION_PASS_WITH_PARAMS("loop-vectorize",
[](LoopVectorizeOptions Opts) {
return LoopVectorizePass(Opts);
},
- parseLoopVectorizeOptions)
+ parseLoopVectorizeOptions,
+ "no-interleave-forced-only;interleave-forced-only;"
+ "no-vectorize-forced-only;vectorize-forced-only")
FUNCTION_PASS_WITH_PARAMS("mldst-motion",
[](MergedLoadStoreMotionOptions Opts) {
return MergedLoadStoreMotionPass(Opts);
},
- parseMergedLoadStoreMotionOptions)
+ parseMergedLoadStoreMotionOptions,
+ "no-split-footer-bb;split-footer-bb")
FUNCTION_PASS_WITH_PARAMS("gvn",
[](GVNOptions Opts) {
return GVN(Opts);
},
- parseGVNOptions)
+ parseGVNOptions,
+ "no-pre;pre;"
+ "no-load-pre;load-pre;"
+ "no-split-backedge-load-pre;split-backedge-load-pre;"
+ "no-memdep;memdep")
FUNCTION_PASS_WITH_PARAMS("print<stack-lifetime>",
[](StackLifetime::LivenessType Type) {
return StackLifetimePrinterPass(dbgs(), Type);
},
- parseStackLifetimeOptions)
+ parseStackLifetimeOptions,
+ "may;must")
#undef FUNCTION_PASS_WITH_PARAMS
#ifndef LOOP_ANALYSIS
@@ -414,11 +436,12 @@ LOOP_PASS("loop-versioning-licm", LoopVersioningLICMPass())
#undef LOOP_PASS
#ifndef LOOP_PASS_WITH_PARAMS
-#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER)
+#define LOOP_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER, PARAMS)
#endif
LOOP_PASS_WITH_PARAMS("unswitch",
- [](bool NonTrivial) {
- return SimpleLoopUnswitchPass(NonTrivial);
- },
- parseLoopUnswitchOptions)
+ [](bool NonTrivial) {
+ return SimpleLoopUnswitchPass(NonTrivial);
+ },
+ parseLoopUnswitchOptions,
+ "no-nontrivial;nontrivial")
#undef LOOP_PASS_WITH_PARAMS
diff --git a/llvm/test/Other/print-passes.ll b/llvm/test/Other/print-passes.ll
index a77922bff6f4c..d208085c849ce 100644
--- a/llvm/test/Other/print-passes.ll
+++ b/llvm/test/Other/print-passes.ll
@@ -12,11 +12,15 @@
; CHECK: no-op-cgscc
; CHECK: Function passes:
; CHECK: no-op-function
+; CHECK: Function passes with params:
+; CHECK: loop-unroll<O0;O1;O2;O3;full-unroll-max=N;no-partial;partial;no-peeling;peeling;no-profile-peeling;profile-peeling;no-runtime;runtime;no-upperbound;upperbound>
; CHECK: Function analyses:
; CHECK: no-op-function
; CHECK: Function alias analyses:
; CHECK: basic-aa
; CHECK: Loop passes:
; CHECK: no-op-loop
+; CHECK: Loop passes with params:
+; CHECK: unswitch<no-nontrivial;nontrivial>
; CHECK: Loop analyses:
; CHECK: no-op-loop
More information about the llvm-commits
mailing list