From d69ada30e23f1b226daeee3a9b13826e1e368ede Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Tue, 27 Oct 2020 16:29:10 -0700 Subject: [PATCH] [BranchProbabilityInfo] Make MaxSuccIdx[Src] efficient and add a comment about the subtle eraseBlock. NFC Follow-up to D90272. --- llvm/lib/Analysis/BranchProbabilityInfo.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Analysis/BranchProbabilityInfo.cpp b/llvm/lib/Analysis/BranchProbabilityInfo.cpp index 7d9760e..267d415 100644 --- a/llvm/lib/Analysis/BranchProbabilityInfo.cpp +++ b/llvm/lib/Analysis/BranchProbabilityInfo.cpp @@ -1138,10 +1138,8 @@ void BranchProbabilityInfo::setEdgeProbability(const BasicBlock *Src, << IndexInSuccessors << " successor probability to " << Prob << "\n"); - if (MaxSuccIdx.find(Src) == MaxSuccIdx.end()) - MaxSuccIdx[Src] = IndexInSuccessors; - else - MaxSuccIdx[Src] = std::max(MaxSuccIdx[Src], IndexInSuccessors); + unsigned &SuccIdx = MaxSuccIdx[Src]; + SuccIdx = std::max(SuccIdx, IndexInSuccessors); } /// Set the edge probability for all edges at once. @@ -1179,6 +1177,8 @@ BranchProbabilityInfo::printEdgeProbability(raw_ostream &OS, } void BranchProbabilityInfo::eraseBlock(const BasicBlock *BB) { + // Note that we cannot use successors of BB because the terminator of BB may + // have changed when eraseBlock is called as a BasicBlockCallbackVH callback. auto It = MaxSuccIdx.find(BB); if (It == MaxSuccIdx.end()) return; -- 2.7.4