diff options
author | Cong Hou <congh@google.com> | 2015-10-12 19:44:08 +0000 |
---|---|---|
committer | Cong Hou <congh@google.com> | 2015-10-12 19:44:08 +0000 |
commit | 3320bcd81569bcf9dc73b02bfc6b08352ab4cf22 (patch) | |
tree | 88cd719539b68524d4b7d19904618552db71df07 /llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | |
parent | 4a5f35c0aec040614e01f70c988b557641542fdb (diff) | |
download | bcm5719-llvm-3320bcd81569bcf9dc73b02bfc6b08352ab4cf22.tar.gz bcm5719-llvm-3320bcd81569bcf9dc73b02bfc6b08352ab4cf22.zip |
Update the branch weight metadata in JumpThreading pass.
In JumpThreading pass, the branch weight metadata is not updated after CFG modification. Consider the jump threading on PredBB, BB, and SuccBB. After jump threading, the weight on BB->SuccBB should be adjusted as some of it is contributed by the edge PredBB->BB, which doesn't exist anymore. This patch tries to update the edge weight in metadata on BB->SuccBB by scaling it by 1 - Freq(PredBB->BB) / Freq(BB->SuccBB).
Differential revision: http://reviews.llvm.org/D10979
llvm-svn: 250089
Diffstat (limited to 'llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp')
-rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp index 903a263a65f..48e23af2690 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp @@ -530,6 +530,13 @@ BlockFrequencyInfoImplBase::getFloatingBlockFreq(const BlockNode &Node) const { return Freqs[Node.Index].Scaled; } +void BlockFrequencyInfoImplBase::setBlockFreq(const BlockNode &Node, + uint64_t Freq) { + assert(Node.isValid() && "Expected valid node"); + assert(Node.Index < Freqs.size() && "Expected legal index"); + Freqs[Node.Index].Integer = Freq; +} + std::string BlockFrequencyInfoImplBase::getBlockName(const BlockNode &Node) const { return std::string(); |