Skip to content

Commit 8c692b4

Browse files
authored
[StandardInstrumentations] Make -print-after-pass-number/-print-after-pass-number options allow multiple pass numbers specified (#155228)
`-print-before` and `-print-after` support multiple passes as a list of strings, so it makes sense that we also support `-print-before-pass-number` and `-print-after-pass-number` taking a list of pass numbers as input. This is useful if you want to print out the IRs before/after specified passes with pass numbers reported by print-pass-numbers in a single run.
1 parent 78baec3 commit 8c692b4

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

llvm/lib/Passes/StandardInstrumentations.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -118,15 +118,15 @@ static cl::opt<bool> PrintPassNumbers(
118118
"print-pass-numbers", cl::init(false), cl::Hidden,
119119
cl::desc("Print pass names and their ordinals"));
120120

121-
static cl::opt<unsigned> PrintBeforePassNumber(
122-
"print-before-pass-number", cl::init(0), cl::Hidden,
123-
cl::desc("Print IR before the pass with this number as "
121+
static cl::list<unsigned> PrintBeforePassNumber(
122+
"print-before-pass-number", cl::CommaSeparated, cl::Hidden,
123+
cl::desc("Print IR before the passes with specified numbers as "
124124
"reported by print-pass-numbers"));
125125

126-
static cl::opt<unsigned>
127-
PrintAfterPassNumber("print-after-pass-number", cl::init(0), cl::Hidden,
128-
cl::desc("Print IR after the pass with this number as "
129-
"reported by print-pass-numbers"));
126+
static cl::list<unsigned> PrintAfterPassNumber(
127+
"print-after-pass-number", cl::CommaSeparated, cl::Hidden,
128+
cl::desc("Print IR after the passes with specified numbers as "
129+
"reported by print-pass-numbers"));
130130

131131
static cl::opt<std::string> IRDumpDirectory(
132132
"ir-dump-directory",
@@ -984,24 +984,24 @@ bool PrintIRInstrumentation::shouldPrintAfterPass(StringRef PassID) {
984984

985985
bool PrintIRInstrumentation::shouldPrintBeforeCurrentPassNumber() {
986986
return shouldPrintBeforeSomePassNumber() &&
987-
(CurrentPassNumber == PrintBeforePassNumber);
987+
(is_contained(PrintBeforePassNumber, CurrentPassNumber));
988988
}
989989

990990
bool PrintIRInstrumentation::shouldPrintAfterCurrentPassNumber() {
991991
return shouldPrintAfterSomePassNumber() &&
992-
(CurrentPassNumber == PrintAfterPassNumber);
992+
(is_contained(PrintAfterPassNumber, CurrentPassNumber));
993993
}
994994

995995
bool PrintIRInstrumentation::shouldPrintPassNumbers() {
996996
return PrintPassNumbers;
997997
}
998998

999999
bool PrintIRInstrumentation::shouldPrintBeforeSomePassNumber() {
1000-
return PrintBeforePassNumber > 0;
1000+
return !PrintBeforePassNumber.empty();
10011001
}
10021002

10031003
bool PrintIRInstrumentation::shouldPrintAfterSomePassNumber() {
1004-
return PrintAfterPassNumber > 0;
1004+
return !PrintAfterPassNumber.empty();
10051005
}
10061006

10071007
void PrintIRInstrumentation::registerCallbacks(

llvm/test/Other/print-at-pass-number.ll

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,22 @@
22
; RUN: opt -passes="loop(indvars,loop-deletion,loop-unroll-full)" -print-pass-numbers -filter-print-funcs=baz -S -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=NUMBER-FILTERED
33
; RUN: opt -passes="loop(indvars,loop-deletion,loop-unroll-full)" -print-module-scope -print-before-pass-number=3 -S -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=BEFORE
44
; RUN: opt -passes="loop(indvars,loop-deletion,loop-unroll-full)" -print-module-scope -print-after-pass-number=2 -S -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=AFTER
5+
; RUN: opt -passes="loop(indvars,loop-deletion,loop-unroll-full)" -print-module-scope -print-before-pass-number=2,3 -S -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=BEFORE-MULTI
6+
; RUN: opt -passes="loop(indvars,loop-deletion,loop-unroll-full)" -print-module-scope -print-after-pass-number=2,3 -S -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=AFTER-MULTI
57

68
define i32 @bar(i32 %arg) {
79
; BEFORE: *** IR Dump Before 3-IndVarSimplifyPass on loop %bb1 in function bar ***
810
; BEFORE: define i32 @bar(i32 %arg) {
911
; AFTER: *** IR Dump After 2-LCSSAPass on bar ***
1012
; AFTER: define i32 @bar(i32 %arg) {
13+
; BEFORE-MULTI: *** IR Dump Before 2-LCSSAPass on bar ***
14+
; BEFORE-MULTI: define i32 @bar(i32 %arg) {
15+
; BEFORE-MULTI: *** IR Dump Before 3-IndVarSimplifyPass on loop %bb1 in function bar ***
16+
; BEFORE-MULTI: define i32 @bar(i32 %arg) {
17+
; AFTER-MULTI: *** IR Dump After 2-LCSSAPass on bar ***
18+
; AFTER-MULTI: define i32 @bar(i32 %arg) {
19+
; AFTER-MULTI: *** IR Dump After 3-IndVarSimplifyPass on loop %bb1 in function bar ***
20+
; AFTER-MULTI: define i32 @bar(i32 %arg) {
1121

1222
bb:
1323
br label %bb1

0 commit comments

Comments
 (0)