aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp
diff options
context:
space:
mode:
authorMircea Trofin <mtrofin@google.com>2020-07-28 13:04:11 -0700
committerMircea Trofin <mtrofin@google.com>2020-07-28 13:04:11 -0700
commit1e027b77f056fb50e50d9f743e21eb41151c32da (patch)
tree7a09a641473736cae2f725e34078f1d751230fe7 /llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp
parentb8943e7cea7cafebe26dd96e1a0d98e1f68a1386 (diff)
downloadllvm-1e027b77f056fb50e50d9f743e21eb41151c32da.zip
llvm-1e027b77f056fb50e50d9f743e21eb41151c32da.tar.gz
llvm-1e027b77f056fb50e50d9f743e21eb41151c32da.tar.bz2
[llvm][NFC] refactor setBlockFrequency for clarity.
The refactoring encapsulates frequency calculation in MachineBlockFrequencyInfo, and renames the API to clarify its motivation. It should clarify frequencies may not be reset 'freely' by users of the analysis, as the API serves as a partial update to avoid a full analysis recomputation. Differential Revision: https://reviews.llvm.org/D84427
Diffstat (limited to 'llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp b/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp
index c836997..54e0a14 100644
--- a/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp
+++ b/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp
@@ -247,10 +247,15 @@ bool MachineBlockFrequencyInfo::isIrrLoopHeader(
return MBFI->isIrrLoopHeader(MBB);
}
-void MachineBlockFrequencyInfo::setBlockFreq(const MachineBasicBlock *MBB,
- uint64_t Freq) {
+void MachineBlockFrequencyInfo::onEdgeSplit(
+ const MachineBasicBlock &NewPredecessor,
+ const MachineBasicBlock &NewSuccessor,
+ const MachineBranchProbabilityInfo &MBPI) {
assert(MBFI && "Expected analysis to be available");
- MBFI->setBlockFreq(MBB, Freq);
+ auto NewSuccFreq = MBFI->getBlockFreq(&NewPredecessor) *
+ MBPI.getEdgeProbability(&NewPredecessor, &NewSuccessor);
+
+ MBFI->setBlockFreq(&NewSuccessor, NewSuccFreq.getFrequency());
}
const MachineFunction *MachineBlockFrequencyInfo::getFunction() const {