diff --git a/llvm/include/llvm/Analysis/RegionInfoImpl.h b/llvm/include/llvm/Analysis/RegionInfoImpl.h index ebfb060ded3dd..db3a9027549ce 100644 --- a/llvm/include/llvm/Analysis/RegionInfoImpl.h +++ b/llvm/include/llvm/Analysis/RegionInfoImpl.h @@ -338,14 +338,11 @@ template typename Tr::RegionNodeT *RegionBase::getBBNode(BlockT *BB) const { assert(contains(BB) && "Can get BB node out of this region!"); - typename BBNodeMapT::const_iterator at = BBNodeMap.find(BB); - - if (at == BBNodeMap.end()) { + auto [at, Inserted] = BBNodeMap.try_emplace(BB); + if (Inserted) { auto Deconst = const_cast *>(this); - typename BBNodeMapT::value_type V = { - BB, - std::make_unique(static_cast(Deconst), BB)}; - at = BBNodeMap.insert(std::move(V)).first; + at->second = + std::make_unique(static_cast(Deconst), BB); } return at->second.get(); }