From 28a932742cf7277aacf4f15667249b6c1e13b2f5 Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Thu, 5 May 2016 21:13:27 +0000 Subject: [PM] port Branch Frequency Analaysis pass to new PM llvm-svn: 268687 --- llvm/lib/Analysis/BlockFrequencyInfo.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'llvm/lib/Analysis') diff --git a/llvm/lib/Analysis/BlockFrequencyInfo.cpp b/llvm/lib/Analysis/BlockFrequencyInfo.cpp index 8b19b2e19c4..a0c472d7c72 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfo.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfo.cpp @@ -113,6 +113,15 @@ BlockFrequencyInfo::BlockFrequencyInfo(const Function &F, calculate(F, BPI, LI); } +BlockFrequencyInfo::BlockFrequencyInfo(BlockFrequencyInfo &&Arg) + : BFI(std::move(Arg.BFI)) {} + +BlockFrequencyInfo &BlockFrequencyInfo::operator=(BlockFrequencyInfo &&RHS) { + releaseMemory(); + BFI = std::move(RHS.BFI); + return *this; +} + void BlockFrequencyInfo::calculate(const Function &F, const BranchProbabilityInfo &BPI, const LoopInfo &LI) { @@ -225,3 +234,21 @@ bool BlockFrequencyInfoWrapperPass::runOnFunction(Function &F) { BFI.calculate(F, BPI, LI); return false; } + +char BlockFrequencyAnalysis::PassID; +BlockFrequencyInfo BlockFrequencyAnalysis::run(Function &F, + AnalysisManager &AM) { + BlockFrequencyInfo BFI; + BFI.calculate(F, AM.getResult(F), + AM.getResult(F)); + return BFI; +} + +PreservedAnalyses +BlockFrequencyPrinterPass::run(Function &F, AnalysisManager &AM) { + OS << "Printing analysis results of BFI for function " + << "'" << F.getName() << "':" + << "\n"; + AM.getResult(F).print(OS); + return PreservedAnalyses::all(); +} -- cgit v1.2.3