forked from OSchip/llvm-project
parent
0f470ab104
commit
26ec65ac3c
|
@ -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