diff options
author | Cong Hou <congh@google.com> | 2015-12-22 23:45:55 +0000 |
---|---|---|
committer | Cong Hou <congh@google.com> | 2015-12-22 23:45:55 +0000 |
commit | 6a2c71af0bc5beebf954e1970233fbeb3be0bf1c (patch) | |
tree | d6df30c77c756af4124e8d4d36c36e7c1f255e9b /llvm/lib/Transforms/Scalar/JumpThreading.cpp | |
parent | 240529892b5ab600b2f6f356cc2addeacdef0849 (diff) | |
download | bcm5719-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.cpp | 19 |
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++) |