ProfileInfo interface tweaks.
- Add getExecutionCount(const Function).
- Add helper Edge type.
- constify.
- No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75623 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/ProfileInfo.cpp b/lib/Analysis/ProfileInfo.cpp
index a0965b6..26328d0 100644
--- a/lib/Analysis/ProfileInfo.cpp
+++ b/lib/Analysis/ProfileInfo.cpp
@@ -26,8 +26,8 @@
ProfileInfo::~ProfileInfo() {}
-unsigned ProfileInfo::getExecutionCount(BasicBlock *BB) const {
- pred_iterator PI = pred_begin(BB), PE = pred_end(BB);
+unsigned ProfileInfo::getExecutionCount(const BasicBlock *BB) const {
+ pred_const_iterator PI = pred_begin(BB), PE = pred_end(BB);
// Are there zero predecessors of this block?
if (PI == PE) {
@@ -49,23 +49,23 @@
// has a LARGE number of in-edges. Handle the common case of having only a
// few in-edges with special code.
//
- BasicBlock *FirstPred = *PI;
+ const BasicBlock *FirstPred = *PI;
unsigned Count = getEdgeWeight(FirstPred, BB);
++PI;
if (PI == PE) return Count; // Quick exit for single predecessor blocks
- BasicBlock *SecondPred = *PI;
+ const BasicBlock *SecondPred = *PI;
if (SecondPred != FirstPred) Count += getEdgeWeight(SecondPred, BB);
++PI;
if (PI == PE) return Count; // Quick exit for two predecessor blocks
- BasicBlock *ThirdPred = *PI;
+ const BasicBlock *ThirdPred = *PI;
if (ThirdPred != FirstPred && ThirdPred != SecondPred)
Count += getEdgeWeight(ThirdPred, BB);
++PI;
if (PI == PE) return Count; // Quick exit for three predecessor blocks
- std::set<BasicBlock*> ProcessedPreds;
+ std::set<const BasicBlock*> ProcessedPreds;
ProcessedPreds.insert(FirstPred);
ProcessedPreds.insert(SecondPred);
ProcessedPreds.insert(ThirdPred);
@@ -75,6 +75,10 @@
return Count;
}
+unsigned ProfileInfo::getExecutionCount(const Function *F) const {
+ if (F->isDeclaration()) return -1;
+ return getExecutionCount(&F->getEntryBlock());
+}
//===----------------------------------------------------------------------===//