Skip to content

Commit

Permalink
[NewPM][PassInstrument] Make PrintIR and TimePasses to use before-pas…
Browse files Browse the repository at this point in the history
…s-run callback

Reviewed By: asbirlea, aeubanks

Differential Revision: https://reviews.llvm.org/D84773
  • Loading branch information
Yuanfang Chen committed Jul 29, 2020
1 parent 5cf0c2e commit 7a2e112
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 15 deletions.
2 changes: 1 addition & 1 deletion llvm/include/llvm/IR/PassTimingInfo.h
Expand Up @@ -100,7 +100,7 @@ class TimePassesHandler {
void stopTimer(StringRef PassID);

// Implementation of pass instrumentation callbacks.
bool runBeforePass(StringRef PassID);
void runBeforePass(StringRef PassID);
void runAfterPass(StringRef PassID);
};

Expand Down
2 changes: 1 addition & 1 deletion llvm/include/llvm/Passes/StandardInstrumentations.h
Expand Up @@ -39,7 +39,7 @@ class PrintIRInstrumentation {
void registerCallbacks(PassInstrumentationCallbacks &PIC);

private:
bool printBeforePass(StringRef PassID, Any IR);
void printBeforePass(StringRef PassID, Any IR);
void printAfterPass(StringRef PassID, Any IR);
void printAfterPassInvalidated(StringRef PassID);

Expand Down
11 changes: 4 additions & 7 deletions llvm/lib/IR/PassTimingInfo.cpp
Expand Up @@ -240,17 +240,14 @@ static bool matchPassManager(StringRef PassID) {
Prefix.endswith("AnalysisManagerProxy");
}

bool TimePassesHandler::runBeforePass(StringRef PassID) {
void TimePassesHandler::runBeforePass(StringRef PassID) {
if (matchPassManager(PassID))
return true;
return;

startTimer(PassID);

LLVM_DEBUG(dbgs() << "after runBeforePass(" << PassID << ")\n");
LLVM_DEBUG(dump());

// we are not going to skip this pass, thus return true.
return true;
}

void TimePassesHandler::runAfterPass(StringRef PassID) {
Expand All @@ -267,8 +264,8 @@ void TimePassesHandler::registerCallbacks(PassInstrumentationCallbacks &PIC) {
if (!Enabled)
return;

PIC.registerBeforePassCallback(
[this](StringRef P, Any) { return this->runBeforePass(P); });
PIC.registerBeforeNonSkippedPassCallback(
[this](StringRef P, Any) { this->runBeforePass(P); });
PIC.registerAfterPassCallback(
[this](StringRef P, Any) { this->runAfterPass(P); });
PIC.registerAfterPassInvalidatedCallback(
Expand Down
12 changes: 6 additions & 6 deletions llvm/lib/Passes/StandardInstrumentations.cpp
Expand Up @@ -180,9 +180,9 @@ PrintIRInstrumentation::popModuleDesc(StringRef PassID) {
return ModuleDesc;
}

bool PrintIRInstrumentation::printBeforePass(StringRef PassID, Any IR) {
void PrintIRInstrumentation::printBeforePass(StringRef PassID, Any IR) {
if (PassID.startswith("PassManager<") || PassID.contains("PassAdaptor<"))
return true;
return;

// Saving Module for AfterPassInvalidated operations.
// Note: here we rely on a fact that we do not change modules while
Expand All @@ -192,11 +192,11 @@ bool PrintIRInstrumentation::printBeforePass(StringRef PassID, Any IR) {
pushModuleDesc(PassID, IR);

if (!llvm::shouldPrintBeforePass(PassID))
return true;
return;

SmallString<20> Banner = formatv("*** IR Dump Before {0} ***", PassID);
unwrapAndPrint(IR, Banner, llvm::forcePrintModuleIR());
return true;
return;
}

void PrintIRInstrumentation::printAfterPass(StringRef PassID, Any IR) {
Expand Down Expand Up @@ -240,8 +240,8 @@ void PrintIRInstrumentation::registerCallbacks(
// for later use in AfterPassInvalidated.
StoreModuleDesc = llvm::forcePrintModuleIR() && llvm::shouldPrintAfterPass();
if (llvm::shouldPrintBeforePass() || StoreModuleDesc)
PIC.registerBeforePassCallback(
[this](StringRef P, Any IR) { return this->printBeforePass(P, IR); });
PIC.registerBeforeNonSkippedPassCallback(
[this](StringRef P, Any IR) { this->printBeforePass(P, IR); });

if (llvm::shouldPrintAfterPass()) {
PIC.registerAfterPassCallback(
Expand Down

0 comments on commit 7a2e112

Please sign in to comment.