diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Analysis/CFGPrinter.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Analysis/CFGPrinter.cpp | 141 |
1 files changed, 4 insertions, 137 deletions
diff --git a/contrib/llvm-project/llvm/lib/Analysis/CFGPrinter.cpp b/contrib/llvm-project/llvm/lib/Analysis/CFGPrinter.cpp index f05dd6852d6d..67a15197058b 100644 --- a/contrib/llvm-project/llvm/lib/Analysis/CFGPrinter.cpp +++ b/contrib/llvm-project/llvm/lib/Analysis/CFGPrinter.cpp @@ -19,8 +19,6 @@ #include "llvm/Analysis/CFGPrinter.h" #include "llvm/ADT/PostOrderIterator.h" -#include "llvm/InitializePasses.h" -#include "llvm/Pass.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/GraphWriter.h" @@ -92,37 +90,6 @@ static void viewCFG(Function &F, const BlockFrequencyInfo *BFI, ViewGraph(&CFGInfo, "cfg." + F.getName(), CFGOnly); } -namespace { -struct CFGViewerLegacyPass : public FunctionPass { - static char ID; // Pass identifcation, replacement for typeid - CFGViewerLegacyPass() : FunctionPass(ID) { - initializeCFGViewerLegacyPassPass(*PassRegistry::getPassRegistry()); - } - - bool runOnFunction(Function &F) override { - if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) - return false; - auto *BPI = &getAnalysis<BranchProbabilityInfoWrapperPass>().getBPI(); - auto *BFI = &getAnalysis<BlockFrequencyInfoWrapperPass>().getBFI(); - viewCFG(F, BFI, BPI, getMaxFreq(F, BFI)); - return false; - } - - void print(raw_ostream &OS, const Module * = nullptr) const override {} - - void getAnalysisUsage(AnalysisUsage &AU) const override { - FunctionPass::getAnalysisUsage(AU); - AU.addRequired<BlockFrequencyInfoWrapperPass>(); - AU.addRequired<BranchProbabilityInfoWrapperPass>(); - AU.setPreservesAll(); - } -}; -} // namespace - -char CFGViewerLegacyPass::ID = 0; -INITIALIZE_PASS(CFGViewerLegacyPass, "view-cfg", "View CFG of function", false, - true) - PreservedAnalyses CFGViewerPass::run(Function &F, FunctionAnalysisManager &AM) { if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) return PreservedAnalyses::all(); @@ -132,37 +99,6 @@ PreservedAnalyses CFGViewerPass::run(Function &F, FunctionAnalysisManager &AM) { return PreservedAnalyses::all(); } -namespace { -struct CFGOnlyViewerLegacyPass : public FunctionPass { - static char ID; // Pass identifcation, replacement for typeid - CFGOnlyViewerLegacyPass() : FunctionPass(ID) { - initializeCFGOnlyViewerLegacyPassPass(*PassRegistry::getPassRegistry()); - } - - bool runOnFunction(Function &F) override { - if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) - return false; - auto *BPI = &getAnalysis<BranchProbabilityInfoWrapperPass>().getBPI(); - auto *BFI = &getAnalysis<BlockFrequencyInfoWrapperPass>().getBFI(); - viewCFG(F, BFI, BPI, getMaxFreq(F, BFI), /*CFGOnly=*/true); - return false; - } - - void print(raw_ostream &OS, const Module * = nullptr) const override {} - - void getAnalysisUsage(AnalysisUsage &AU) const override { - FunctionPass::getAnalysisUsage(AU); - AU.addRequired<BlockFrequencyInfoWrapperPass>(); - AU.addRequired<BranchProbabilityInfoWrapperPass>(); - AU.setPreservesAll(); - } -}; -} // namespace - -char CFGOnlyViewerLegacyPass::ID = 0; -INITIALIZE_PASS(CFGOnlyViewerLegacyPass, "view-cfg-only", - "View CFG of function (with no function bodies)", false, true) - PreservedAnalyses CFGOnlyViewerPass::run(Function &F, FunctionAnalysisManager &AM) { if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) @@ -173,37 +109,6 @@ PreservedAnalyses CFGOnlyViewerPass::run(Function &F, return PreservedAnalyses::all(); } -namespace { -struct CFGPrinterLegacyPass : public FunctionPass { - static char ID; // Pass identification, replacement for typeid - CFGPrinterLegacyPass() : FunctionPass(ID) { - initializeCFGPrinterLegacyPassPass(*PassRegistry::getPassRegistry()); - } - - bool runOnFunction(Function &F) override { - if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) - return false; - auto *BPI = &getAnalysis<BranchProbabilityInfoWrapperPass>().getBPI(); - auto *BFI = &getAnalysis<BlockFrequencyInfoWrapperPass>().getBFI(); - writeCFGToDotFile(F, BFI, BPI, getMaxFreq(F, BFI)); - return false; - } - - void print(raw_ostream &OS, const Module * = nullptr) const override {} - - void getAnalysisUsage(AnalysisUsage &AU) const override { - FunctionPass::getAnalysisUsage(AU); - AU.addRequired<BlockFrequencyInfoWrapperPass>(); - AU.addRequired<BranchProbabilityInfoWrapperPass>(); - AU.setPreservesAll(); - } -}; -} // namespace - -char CFGPrinterLegacyPass::ID = 0; -INITIALIZE_PASS(CFGPrinterLegacyPass, "dot-cfg", - "Print CFG of function to 'dot' file", false, true) - PreservedAnalyses CFGPrinterPass::run(Function &F, FunctionAnalysisManager &AM) { if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) @@ -214,37 +119,6 @@ PreservedAnalyses CFGPrinterPass::run(Function &F, return PreservedAnalyses::all(); } -namespace { -struct CFGOnlyPrinterLegacyPass : public FunctionPass { - static char ID; // Pass identification, replacement for typeid - CFGOnlyPrinterLegacyPass() : FunctionPass(ID) { - initializeCFGOnlyPrinterLegacyPassPass(*PassRegistry::getPassRegistry()); - } - - bool runOnFunction(Function &F) override { - if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) - return false; - auto *BPI = &getAnalysis<BranchProbabilityInfoWrapperPass>().getBPI(); - auto *BFI = &getAnalysis<BlockFrequencyInfoWrapperPass>().getBFI(); - writeCFGToDotFile(F, BFI, BPI, getMaxFreq(F, BFI), /*CFGOnly=*/true); - return false; - } - void print(raw_ostream &OS, const Module * = nullptr) const override {} - - void getAnalysisUsage(AnalysisUsage &AU) const override { - FunctionPass::getAnalysisUsage(AU); - AU.addRequired<BlockFrequencyInfoWrapperPass>(); - AU.addRequired<BranchProbabilityInfoWrapperPass>(); - AU.setPreservesAll(); - } -}; -} // namespace - -char CFGOnlyPrinterLegacyPass::ID = 0; -INITIALIZE_PASS(CFGOnlyPrinterLegacyPass, "dot-cfg-only", - "Print CFG of function to 'dot' file (with no function bodies)", - false, true) - PreservedAnalyses CFGOnlyPrinterPass::run(Function &F, FunctionAnalysisManager &AM) { if (!CFGFuncName.empty() && !F.getName().contains(CFGFuncName)) @@ -282,14 +156,6 @@ void Function::viewCFGOnly(const BlockFrequencyInfo *BFI, viewCFG(true, BFI, BPI); } -FunctionPass *llvm::createCFGPrinterLegacyPassPass() { - return new CFGPrinterLegacyPass(); -} - -FunctionPass *llvm::createCFGOnlyPrinterLegacyPassPass() { - return new CFGOnlyPrinterLegacyPass(); -} - /// Find all blocks on the paths which terminate with a deoptimize or /// unreachable (i.e. all blocks which are post-dominated by a deoptimize /// or unreachable). These paths are hidden if the corresponding cl::opts @@ -318,10 +184,11 @@ bool DOTGraphTraits<DOTFuncInfo *>::isNodeHidden(const BasicBlock *Node, const DOTFuncInfo *CFGInfo) { if (HideColdPaths.getNumOccurrences() > 0) if (auto *BFI = CFGInfo->getBFI()) { - uint64_t NodeFreq = BFI->getBlockFreq(Node).getFrequency(); - uint64_t EntryFreq = BFI->getEntryFreq(); + BlockFrequency NodeFreq = BFI->getBlockFreq(Node); + BlockFrequency EntryFreq = BFI->getEntryFreq(); // Hide blocks with relative frequency below HideColdPaths threshold. - if ((double)NodeFreq / EntryFreq < HideColdPaths) + if ((double)NodeFreq.getFrequency() / EntryFreq.getFrequency() < + HideColdPaths) return true; } if (HideUnreachablePaths || HideDeoptimizePaths) { |
