mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
cache another dereferenced iterator
llvm-svn: 108421
This commit is contained in:
parent
285c87d8b3
commit
0b8d6a43c0
@ -71,22 +71,24 @@ ProfileInfoT<Function,BasicBlock>::getExecutionCount(const BasicBlock *BB) {
|
||||
|
||||
// Are there zero predecessors of this block?
|
||||
if (PI == PE) {
|
||||
Edge e = getEdge(0,BB);
|
||||
Edge e = getEdge(0, BB);
|
||||
Count = getEdgeWeight(e);
|
||||
} else {
|
||||
// Otherwise, if there are predecessors, the execution count of this block is
|
||||
// the sum of the edge frequencies from the incoming edges.
|
||||
std::set<const BasicBlock*> ProcessedPreds;
|
||||
Count = 0;
|
||||
for (; PI != PE; ++PI)
|
||||
if (ProcessedPreds.insert(*PI).second) {
|
||||
double w = getEdgeWeight(getEdge(*PI, BB));
|
||||
for (; PI != PE; ++PI) {
|
||||
const BasicBlock *P = *PI;
|
||||
if (ProcessedPreds.insert(P).second) {
|
||||
double w = getEdgeWeight(getEdge(P, BB));
|
||||
if (w == MissingValue) {
|
||||
Count = MissingValue;
|
||||
break;
|
||||
}
|
||||
Count += w;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If the predecessors did not suffice to get block weight, try successors.
|
||||
|
Loading…
Reference in New Issue
Block a user