summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/JumpThreading.cpp
diff options
context:
space:
mode:
authorCong Hou <congh@google.com>2015-12-22 23:45:55 +0000
committerCong Hou <congh@google.com>2015-12-22 23:45:55 +0000
commit6a2c71af0bc5beebf954e1970233fbeb3be0bf1c (patch)
treed6df30c77c756af4124e8d4d36c36e7c1f255e9b /llvm/lib/Transforms/Scalar/JumpThreading.cpp
parent240529892b5ab600b2f6f356cc2addeacdef0849 (diff)
downloadbcm5719-llvm-6a2c71af0bc5beebf954e1970233fbeb3be0bf1c.tar.gz
bcm5719-llvm-6a2c71af0bc5beebf954e1970233fbeb3be0bf1c.zip
[BPI] Fix two potential divide-by-zero operations that are introduced in r256263.
llvm-svn: 256303
Diffstat (limited to 'llvm/lib/Transforms/Scalar/JumpThreading.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/JumpThreading.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
index d30c336be21..5c16b2c5de0 100644
--- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp
+++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
@@ -1647,14 +1647,19 @@ void JumpThreading::UpdateBlockFreqAndEdgeWeight(BasicBlock *PredBB,
uint64_t MaxBBSuccFreq =
*std::max_element(BBSuccFreq.begin(), BBSuccFreq.end());
- SmallVector<BranchProbability, 4> BBSuccProbs;
- for (uint64_t Freq : BBSuccFreq)
- BBSuccProbs.push_back(
- BranchProbability::getBranchProbability(Freq, MaxBBSuccFreq));
- // Normalize edge probabilities so that they sum up to one.
- BranchProbability::normalizeProbabilities(BBSuccProbs.begin(),
- BBSuccProbs.end());
+ SmallVector<BranchProbability, 4> BBSuccProbs;
+ if (MaxBBSuccFreq == 0)
+ BBSuccProbs.assign(BBSuccFreq.size(),
+ {1, static_cast<unsigned>(BBSuccFreq.size())});
+ else {
+ for (uint64_t Freq : BBSuccFreq)
+ BBSuccProbs.push_back(
+ BranchProbability::getBranchProbability(Freq, MaxBBSuccFreq));
+ // Normalize edge probabilities so that they sum up to one.
+ BranchProbability::normalizeProbabilities(BBSuccProbs.begin(),
+ BBSuccProbs.end());
+ }
// Update edge probabilities in BPI.
for (int I = 0, E = BBSuccProbs.size(); I < E; I++)
OpenPOWER on IntegriCloud