[clang] [CodeGen] Use DenseMap::try_emplace (NFC) (PR #140430)
Kazu Hirata via cfe-commits
cfe-commits at lists.llvm.org
Sat May 17 20:46:20 PDT 2025
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/140430
We can simplify the code with DenseMap::try_emplace and structured
binding. Note that DenseMap::try_emplace default-constructs the value
if omitted.
>From 9a898fe585ed452ddcb2888bfdee4440687948dc Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Thu, 12 Sep 2024 22:40:55 -0700
Subject: [PATCH] [CodeGen] Use DenseMap::try_emplace (NFC)
We can simplify the code with DenseMap::try_emplace and structured
binding. Note that DenseMap::try_emplace default-constructs the value
if omitted.
---
clang/lib/CodeGen/MicrosoftCXXABI.cpp | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
index aa9a55ae05927..514cc1d9015ee 100644
--- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp
+++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -1818,9 +1818,7 @@ llvm::GlobalVariable *MicrosoftCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
// VFTablesMap, thus a simple zero check is not sufficient.
VFTableIdTy ID(RD, VPtrOffset);
- VTablesMapTy::iterator I;
- bool Inserted;
- std::tie(I, Inserted) = VTablesMap.insert(std::make_pair(ID, nullptr));
+ auto [I, Inserted] = VTablesMap.try_emplace(ID);
if (!Inserted)
return I->second;
@@ -2036,10 +2034,7 @@ const VBTableGlobals &
MicrosoftCXXABI::enumerateVBTables(const CXXRecordDecl *RD) {
// At this layer, we can key the cache off of a single class, which is much
// easier than caching each vbtable individually.
- llvm::DenseMap<const CXXRecordDecl*, VBTableGlobals>::iterator Entry;
- bool Added;
- std::tie(Entry, Added) =
- VBTablesMap.insert(std::make_pair(RD, VBTableGlobals()));
+ auto [Entry, Added] = VBTablesMap.try_emplace(RD);
VBTableGlobals &VBGlobals = Entry->second;
if (!Added)
return VBGlobals;
More information about the cfe-commits
mailing list