diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-08-08 00:20:37 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-08-08 00:20:37 +0000 |
commit | c0b61ff9c7ca6ce7a04430655bdb16843b7ff31f (patch) | |
tree | b3f23bee59f07bb0c1eebd6f676cdcd0b8d7b0a5 /llvm/lib/CodeGen/MachineBasicBlock.cpp | |
parent | b94873600249aaa6486f6bc6bdba7e9b19c1ecae (diff) | |
download | llvm-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.cpp | 5 |
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 |