diff options
Diffstat (limited to 'lib/Analysis/BranchProbabilityInfo.cpp')
| -rw-r--r-- | lib/Analysis/BranchProbabilityInfo.cpp | 11 | 
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/Analysis/BranchProbabilityInfo.cpp b/lib/Analysis/BranchProbabilityInfo.cpp index 0dc4475ca0e2..db87b17c1567 100644 --- a/lib/Analysis/BranchProbabilityInfo.cpp +++ b/lib/Analysis/BranchProbabilityInfo.cpp @@ -301,6 +301,8 @@ bool BranchProbabilityInfo::calcMetadataWeights(const BasicBlock *BB) {        WeightSum += Weights[i];      }    } +  assert(WeightSum <= UINT32_MAX && +         "Expected weights to scale down to 32 bits");    if (WeightSum == 0 || ReachableIdxs.size() == 0) {      for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i) @@ -328,21 +330,14 @@ bool BranchProbabilityInfo::calcMetadataWeights(const BasicBlock *BB) {      // the difference between reachable blocks.      if (ToDistribute > BranchProbability::getZero()) {        BranchProbability PerEdge = ToDistribute / ReachableIdxs.size(); -      for (auto i : ReachableIdxs) { +      for (auto i : ReachableIdxs)          BP[i] += PerEdge; -        ToDistribute -= PerEdge; -      } -      // Tail goes to the first reachable edge. -      BP[ReachableIdxs[0]] += ToDistribute;      }    }    for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i)      setEdgeProbability(BB, i, BP[i]); -  assert(WeightSum <= UINT32_MAX && -         "Expected weights to scale down to 32 bits"); -    return true;  }  | 
