Skip to content

Commit 2b56631

Browse files
committed
Revert "[NewPM] Remove CFGPrinterLegacyPass (llvm#73414)"
This reverts commit 9ba74c2. Continue to support CFGPrinterLegacyPass for LGC, until it has been converted to new pass manager. Change-Id: I147a44afa8a011bbed28490de1f4dfb564c2fb58
1 parent 41b72e6 commit 2b56631

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

llvm/include/llvm/Analysis/CFGPrinter.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,4 +342,9 @@ struct DOTGraphTraits<DOTFuncInfo *> : public DefaultDOTGraphTraits {
342342
};
343343
} // End llvm namespace
344344

345+
namespace llvm {
346+
class FunctionPass;
347+
FunctionPass *createCFGPrinterLegacyPassPass();
348+
} // End llvm namespace
349+
345350
#endif

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ void initializeBranchRelaxationPass(PassRegistry&);
6565
void initializeBreakCriticalEdgesPass(PassRegistry&);
6666
void initializeBreakFalseDepsPass(PassRegistry&);
6767
void initializeCanonicalizeFreezeInLoopsPass(PassRegistry &);
68+
void initializeCFGPrinterLegacyPassPass(PassRegistry&);
6869
void initializeCFGSimplifyPassPass(PassRegistry&);
6970
void initializeCFGuardPass(PassRegistry&);
7071
void initializeCFGuardLongjmpPass(PassRegistry&);

llvm/lib/Analysis/Analysis.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ void llvm::initializeAnalysis(PassRegistry &Registry) {
2424
initializeCallGraphWrapperPassPass(Registry);
2525
initializeCallGraphDOTPrinterPass(Registry);
2626
initializeCallGraphViewerPass(Registry);
27+
initializeCFGPrinterLegacyPassPass(Registry);
2728
initializeCycleInfoWrapperPassPass(Registry);
2829
initializeDependenceAnalysisWrapperPassPass(Registry);
2930
initializeDominanceFrontierWrapperPassPass(Registry);

llvm/lib/Analysis/CFGPrinter.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
#include "llvm/Analysis/CFGPrinter.h"
2121
#include "llvm/ADT/PostOrderIterator.h"
22+
#include "llvm/InitializePasses.h"
23+
#include "llvm/Pass.h"
2224
#include "llvm/Support/CommandLine.h"
2325
#include "llvm/Support/FileSystem.h"
2426
#include "llvm/Support/GraphWriter.h"
@@ -109,6 +111,37 @@ PreservedAnalyses CFGOnlyViewerPass::run(Function &F,
109111
return PreservedAnalyses::all();
110112
}
111113

114+
namespace {
115+
struct CFGPrinterLegacyPass : public FunctionPass {
116+
static char ID; // Pass identification, replacement for typeid
117+
CFGPrinterLegacyPass() : FunctionPass(ID) {
118+
initializeCFGPrinterLegacyPassPass(*PassRegistry::getPassRegistry());
119+
}
120+
121+
bool runOnFunction(Function &F) override {
122+
if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName))
123+
return false;
124+
auto *BPI = &getAnalysis<BranchProbabilityInfoWrapperPass>().getBPI();
125+
auto *BFI = &getAnalysis<BlockFrequencyInfoWrapperPass>().getBFI();
126+
writeCFGToDotFile(F, BFI, BPI, getMaxFreq(F, BFI));
127+
return false;
128+
}
129+
130+
void print(raw_ostream &OS, const Module * = nullptr) const override {}
131+
132+
void getAnalysisUsage(AnalysisUsage &AU) const override {
133+
FunctionPass::getAnalysisUsage(AU);
134+
AU.addRequired<BlockFrequencyInfoWrapperPass>();
135+
AU.addRequired<BranchProbabilityInfoWrapperPass>();
136+
AU.setPreservesAll();
137+
}
138+
};
139+
} // namespace
140+
141+
char CFGPrinterLegacyPass::ID = 0;
142+
INITIALIZE_PASS(CFGPrinterLegacyPass, "dot-cfg",
143+
"Print CFG of function to 'dot' file", false, true)
144+
112145
PreservedAnalyses CFGPrinterPass::run(Function &F,
113146
FunctionAnalysisManager &AM) {
114147
if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName))
@@ -156,6 +189,10 @@ void Function::viewCFGOnly(const BlockFrequencyInfo *BFI,
156189
viewCFG(true, BFI, BPI);
157190
}
158191

192+
FunctionPass *llvm::createCFGPrinterLegacyPassPass() {
193+
return new CFGPrinterLegacyPass();
194+
}
195+
159196
/// Find all blocks on the paths which terminate with a deoptimize or
160197
/// unreachable (i.e. all blocks which are post-dominated by a deoptimize
161198
/// or unreachable). These paths are hidden if the corresponding cl::opts

0 commit comments

Comments
 (0)