X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FCodeGen%2FBranchFolding.cpp;h=0b2495cc996e00b409c8a1be88a8d70b8f6391e2;hp=ba21d9cc9d55391ac2bcef43b9147b5f106346fb;hb=8e83fe2e97c232086674f9f04b00043bccb89629;hpb=5d2885f554db8eb89a3e2b376c4d6507d456eed2 diff --git a/lib/CodeGen/BranchFolding.cpp b/lib/CodeGen/BranchFolding.cpp index ba21d9cc9d5..0b2495cc996 100644 --- a/lib/CodeGen/BranchFolding.cpp +++ b/lib/CodeGen/BranchFolding.cpp @@ -1099,16 +1099,13 @@ void BranchFolder::setCommonTailEdgeWeights(MachineBasicBlock &TailMBB) { if (TailMBB.succ_size() <= 1) return; - auto SumEdgeFreq = - std::accumulate(EdgeFreqLs.begin(), EdgeFreqLs.end(), BlockFrequency(0)) - .getFrequency(); + auto MaxEdgeFreq = *std::max_element(EdgeFreqLs.begin(), EdgeFreqLs.end()); + uint64_t Scale = MaxEdgeFreq.getFrequency() / UINT32_MAX + 1; auto EdgeFreq = EdgeFreqLs.begin(); for (auto SuccI = TailMBB.succ_begin(), SuccE = TailMBB.succ_end(); SuccI != SuccE; ++SuccI, ++EdgeFreq) - TailMBB.setSuccProbability( - SuccI, BranchProbability::getBranchProbability(EdgeFreq->getFrequency(), - SumEdgeFreq)); + TailMBB.setSuccWeight(SuccI, EdgeFreq->getFrequency() / Scale); } //===----------------------------------------------------------------------===//