diff options
author | Sean Silva <chisophugis@gmail.com> | 2016-08-02 02:15:45 +0000 |
---|---|---|
committer | Sean Silva <chisophugis@gmail.com> | 2016-08-02 02:15:45 +0000 |
commit | f801575fd059cbfe17b38a8bf1cb3e2de585fb20 (patch) | |
tree | 40f70936fa434d9649cd297255c914757e9b957a /llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | |
parent | 07784904282c8b0793b0edfdc0220eadfadb205c (diff) | |
download | bcm5719-llvm-f801575fd059cbfe17b38a8bf1cb3e2de585fb20.tar.gz bcm5719-llvm-f801575fd059cbfe17b38a8bf1cb3e2de585fb20.zip |
CodeExtractor : Add ability to preserve profile data.
Added ability to estimate the entry count of the extracted function and
the branch probabilities of the exit branches.
Patch by River Riddle!
Differential Revision: https://reviews.llvm.org/D22744
llvm-svn: 277411
Diffstat (limited to 'llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp')
-rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp index c2039e1dec2..9d3045c16a0 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp @@ -533,12 +533,18 @@ BlockFrequencyInfoImplBase::getBlockFreq(const BlockNode &Node) const { Optional<uint64_t> BlockFrequencyInfoImplBase::getBlockProfileCount(const Function &F, const BlockNode &Node) const { + return getProfileCountFromFreq(F, getBlockFreq(Node).getFrequency()); +} + +Optional<uint64_t> +BlockFrequencyInfoImplBase::getProfileCountFromFreq(const Function &F, + uint64_t Freq) const { auto EntryCount = F.getEntryCount(); if (!EntryCount) return None; // Use 128 bit APInt to do the arithmetic to avoid overflow. APInt BlockCount(128, EntryCount.getValue()); - APInt BlockFreq(128, getBlockFreq(Node).getFrequency()); + APInt BlockFreq(128, Freq); APInt EntryFreq(128, getEntryFreq()); BlockCount *= BlockFreq; BlockCount = BlockCount.udiv(EntryFreq); |