From 6a2c71af0bc5beebf954e1970233fbeb3be0bf1c Mon Sep 17 00:00:00 2001 From: Cong Hou Date: Tue, 22 Dec 2015 23:45:55 +0000 Subject: [BPI] Fix two potential divide-by-zero operations that are introduced in r256263. llvm-svn: 256303 --- llvm/lib/Analysis/BranchProbabilityInfo.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'llvm/lib/Analysis/BranchProbabilityInfo.cpp') diff --git a/llvm/lib/Analysis/BranchProbabilityInfo.cpp b/llvm/lib/Analysis/BranchProbabilityInfo.cpp index c7c2f436e8c..cf0cc8da6ef 100644 --- a/llvm/lib/Analysis/BranchProbabilityInfo.cpp +++ b/llvm/lib/Analysis/BranchProbabilityInfo.cpp @@ -221,8 +221,14 @@ bool BranchProbabilityInfo::calcMetadataWeights(BasicBlock *BB) { Weights[i] /= ScalingFactor; WeightSum += Weights[i]; } - for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i) - setEdgeProbability(BB, i, {Weights[i], static_cast(WeightSum)}); + + if (WeightSum == 0) { + for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i) + setEdgeProbability(BB, i, {1, e}); + } else { + for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i) + setEdgeProbability(BB, i, {Weights[i], static_cast(WeightSum)}); + } assert(WeightSum <= UINT32_MAX && "Expected weights to scale down to 32 bits"); -- cgit v1.2.3