diff options
| author | Xinliang David Li <davidxl@google.com> | 2016-05-05 21:13:27 +0000 |
|---|---|---|
| committer | Xinliang David Li <davidxl@google.com> | 2016-05-05 21:13:27 +0000 |
| commit | 28a932742cf7277aacf4f15667249b6c1e13b2f5 (patch) | |
| tree | 3c7094d2cce0da8828b9ca4db8e0ebffa5022591 /llvm/lib/Analysis/BlockFrequencyInfo.cpp | |
| parent | 5f57b6ee0fcd7a26631f4f185b6e848e34fd551d (diff) | |
| download | bcm5719-llvm-28a932742cf7277aacf4f15667249b6c1e13b2f5.tar.gz bcm5719-llvm-28a932742cf7277aacf4f15667249b6c1e13b2f5.zip | |
[PM] port Branch Frequency Analaysis pass to new PM
llvm-svn: 268687
Diffstat (limited to 'llvm/lib/Analysis/BlockFrequencyInfo.cpp')
| -rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfo.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
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<Function> &AM) { + BlockFrequencyInfo BFI; + BFI.calculate(F, AM.getResult<BranchProbabilityAnalysis>(F), + AM.getResult<LoopAnalysis>(F)); + return BFI; +} + +PreservedAnalyses +BlockFrequencyPrinterPass::run(Function &F, AnalysisManager<Function> &AM) { + OS << "Printing analysis results of BFI for function " + << "'" << F.getName() << "':" + << "\n"; + AM.getResult<BlockFrequencyAnalysis>(F).print(OS); + return PreservedAnalyses::all(); +} |

