diff options
| author | 2019-06-23 21:36:31 +0000 | |
|---|---|---|
| committer | 2019-06-23 21:36:31 +0000 | |
| commit | 23f101f37937a1bd4a29726cab2f76e0fb038b35 (patch) | |
| tree | f7da7d6b32c2e07114da399150bfa88d72187012 /gnu/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | |
| parent | sort previous; ok deraadt (diff) | |
| download | wireguard-openbsd-23f101f37937a1bd4a29726cab2f76e0fb038b35.tar.xz wireguard-openbsd-23f101f37937a1bd4a29726cab2f76e0fb038b35.zip | |
Import LLVM 8.0.0 release including clang, lld and lldb.
Diffstat (limited to 'gnu/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp')
| -rw-r--r-- | gnu/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gnu/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp b/gnu/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp index 3d095068e7f..08ebcc47a80 100644 --- a/gnu/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp +++ b/gnu/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp @@ -156,9 +156,9 @@ static void combineWeight(Weight &W, const Weight &OtherW) { static void combineWeightsBySorting(WeightList &Weights) { // Sort so edges to the same node are adjacent. - llvm::sort(Weights.begin(), Weights.end(), - [](const Weight &L, - const Weight &R) { return L.TargetNode < R.TargetNode; }); + llvm::sort(Weights, [](const Weight &L, const Weight &R) { + return L.TargetNode < R.TargetNode; + }); // Combine adjacent edges. WeightList::iterator O = Weights.begin(); @@ -573,7 +573,9 @@ BlockFrequencyInfoImplBase::getProfileCountFromFreq(const Function &F, APInt BlockFreq(128, Freq); APInt EntryFreq(128, getEntryFreq()); BlockCount *= BlockFreq; - BlockCount = BlockCount.udiv(EntryFreq); + // Rounded division of BlockCount by EntryFreq. Since EntryFreq is unsigned + // lshr by 1 gives EntryFreq/2. + BlockCount = (BlockCount + EntryFreq.lshr(1)).udiv(EntryFreq); return BlockCount.getLimitedValue(); } @@ -705,7 +707,7 @@ static void findIrreducibleHeaders( "Expected irreducible CFG; -loop-info is likely invalid"); if (Headers.size() == InSCC.size()) { // Every block is a header. - llvm::sort(Headers.begin(), Headers.end()); + llvm::sort(Headers); return; } @@ -740,8 +742,8 @@ static void findIrreducibleHeaders( Others.push_back(Irr.Node); LLVM_DEBUG(dbgs() << " => other = " << BFI.getBlockName(Irr.Node) << "\n"); } - llvm::sort(Headers.begin(), Headers.end()); - llvm::sort(Others.begin(), Others.end()); + llvm::sort(Headers); + llvm::sort(Others); } static void createIrreducibleLoop( |
