diff --git a/llvm/lib/Passes/StandardInstrumentations.cpp b/llvm/lib/Passes/StandardInstrumentations.cpp index f165e85baf611..de293308ae69e 100644 --- a/llvm/lib/Passes/StandardInstrumentations.cpp +++ b/llvm/lib/Passes/StandardInstrumentations.cpp @@ -118,15 +118,15 @@ static cl::opt PrintPassNumbers( "print-pass-numbers", cl::init(false), cl::Hidden, cl::desc("Print pass names and their ordinals")); -static cl::opt PrintBeforePassNumber( - "print-before-pass-number", cl::init(0), cl::Hidden, - cl::desc("Print IR before the pass with this number as " +static cl::list PrintBeforePassNumber( + "print-before-pass-number", cl::CommaSeparated, cl::Hidden, + cl::desc("Print IR before the passes with specified numbers as " "reported by print-pass-numbers")); -static cl::opt - PrintAfterPassNumber("print-after-pass-number", cl::init(0), cl::Hidden, - cl::desc("Print IR after the pass with this number as " - "reported by print-pass-numbers")); +static cl::list PrintAfterPassNumber( + "print-after-pass-number", cl::CommaSeparated, cl::Hidden, + cl::desc("Print IR after the passes with specified numbers as " + "reported by print-pass-numbers")); static cl::opt IRDumpDirectory( "ir-dump-directory", @@ -984,12 +984,12 @@ bool PrintIRInstrumentation::shouldPrintAfterPass(StringRef PassID) { bool PrintIRInstrumentation::shouldPrintBeforeCurrentPassNumber() { return shouldPrintBeforeSomePassNumber() && - (CurrentPassNumber == PrintBeforePassNumber); + (is_contained(PrintBeforePassNumber, CurrentPassNumber)); } bool PrintIRInstrumentation::shouldPrintAfterCurrentPassNumber() { return shouldPrintAfterSomePassNumber() && - (CurrentPassNumber == PrintAfterPassNumber); + (is_contained(PrintAfterPassNumber, CurrentPassNumber)); } bool PrintIRInstrumentation::shouldPrintPassNumbers() { @@ -997,11 +997,11 @@ bool PrintIRInstrumentation::shouldPrintPassNumbers() { } bool PrintIRInstrumentation::shouldPrintBeforeSomePassNumber() { - return PrintBeforePassNumber > 0; + return !PrintBeforePassNumber.empty(); } bool PrintIRInstrumentation::shouldPrintAfterSomePassNumber() { - return PrintAfterPassNumber > 0; + return !PrintAfterPassNumber.empty(); } void PrintIRInstrumentation::registerCallbacks( diff --git a/llvm/test/Other/print-at-pass-number.ll b/llvm/test/Other/print-at-pass-number.ll index 4930eaa5a8656..4a023dec7a2ce 100644 --- a/llvm/test/Other/print-at-pass-number.ll +++ b/llvm/test/Other/print-at-pass-number.ll @@ -2,12 +2,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 ; 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 ; 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 +; 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 +; 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 define i32 @bar(i32 %arg) { ; BEFORE: *** IR Dump Before 3-IndVarSimplifyPass on loop %bb1 in function bar *** ; BEFORE: define i32 @bar(i32 %arg) { ; AFTER: *** IR Dump After 2-LCSSAPass on bar *** ; AFTER: define i32 @bar(i32 %arg) { +; BEFORE-MULTI: *** IR Dump Before 2-LCSSAPass on bar *** +; BEFORE-MULTI: define i32 @bar(i32 %arg) { +; BEFORE-MULTI: *** IR Dump Before 3-IndVarSimplifyPass on loop %bb1 in function bar *** +; BEFORE-MULTI: define i32 @bar(i32 %arg) { +; AFTER-MULTI: *** IR Dump After 2-LCSSAPass on bar *** +; AFTER-MULTI: define i32 @bar(i32 %arg) { +; AFTER-MULTI: *** IR Dump After 3-IndVarSimplifyPass on loop %bb1 in function bar *** +; AFTER-MULTI: define i32 @bar(i32 %arg) { bb: br label %bb1