aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineBasicBlock.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-08-08 00:20:37 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-08-08 00:20:37 +0000
commitc0b61ff9c7ca6ce7a04430655bdb16843b7ff31f (patch)
treeb3f23bee59f07bb0c1eebd6f676cdcd0b8d7b0a5 /llvm/lib/CodeGen/MachineBasicBlock.cpp
parentb94873600249aaa6486f6bc6bdba7e9b19c1ecae (diff)
downloadllvm-c0b61ff9c7ca6ce7a04430655bdb16843b7ff31f.zip
llvm-c0b61ff9c7ca6ce7a04430655bdb16843b7ff31f.tar.gz
llvm-c0b61ff9c7ca6ce7a04430655bdb16843b7ff31f.tar.bz2
Fix a quadratic algorithm in MachineBranchProbabilityInfo.
The getSumForBlock function was quadratic in the number of successors because getSuccWeight would perform a linear search for an already known iterator. llvm-svn: 161460
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineBasicBlock.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp
index f361d1a..2ba414d 100644
--- a/llvm/lib/CodeGen/MachineBasicBlock.cpp
+++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp
@@ -912,12 +912,11 @@ MachineBasicBlock::findDebugLoc(instr_iterator MBBI) {
/// getSuccWeight - Return weight of the edge from this block to MBB.
///
-uint32_t MachineBasicBlock::getSuccWeight(const MachineBasicBlock *succ) const {
+uint32_t MachineBasicBlock::getSuccWeight(const_succ_iterator Succ) const {
if (Weights.empty())
return 0;
- const_succ_iterator I = std::find(Successors.begin(), Successors.end(), succ);
- return *getWeightIterator(I);
+ return *getWeightIterator(Succ);
}
/// getWeightIterator - Return wight iterator corresonding to the I successor