diff --git a/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h b/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h index 7a7a9594f4760..9509e5234840f 100644 --- a/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h +++ b/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h @@ -1143,14 +1143,15 @@ void BlockFrequencyInfoImpl::calculate(const FunctionT &F, template void BlockFrequencyInfoImpl::setBlockFreq(const BlockT *BB, BlockFrequency Freq) { - if (Nodes.count(BB)) - BlockFrequencyInfoImplBase::setBlockFreq(getNode(BB), Freq); + auto [It, Inserted] = Nodes.try_emplace(BB); + if (!Inserted) + BlockFrequencyInfoImplBase::setBlockFreq(It->second.first, Freq); else { // If BB is a newly added block after BFI is done, we need to create a new // BlockNode for it assigned with a new index. The index can be determined // by the size of Freqs. BlockNode NewNode(Freqs.size()); - Nodes[BB] = {NewNode, BFICallbackVH(BB, this)}; + It->second = {NewNode, BFICallbackVH(BB, this)}; Freqs.emplace_back(); BlockFrequencyInfoImplBase::setBlockFreq(NewNode, Freq); }