[llvm] [MC] Eliminate two symbol-related hash maps (PR #95464)
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 13 18:19:36 PDT 2024
MaskRay wrote:
How about making the following change then removing the `Entry` parameter from `createSymbol`?
```
diff --git i/llvm/lib/MC/MCContext.cpp w/llvm/lib/MC/MCContext.cpp
index 7ac44f41186b..535e6d0313d7 100644
--- i/llvm/lib/MC/MCContext.cpp
+++ w/llvm/lib/MC/MCContext.cpp
@@ -206,4 +206,9 @@ MCSymbol *MCContext::getOrCreateSymbol(const Twine &Name) {
MCSymbolTableEntry &Entry = getSymbolTableEntry(NameRef);
- if (!Entry.second.Symbol)
- Entry.second.Symbol = createSymbol(&Entry, NameRef, false, false);
+ if (!Entry.second.Symbol) {
+ bool IsTemporary = false;
+ if (!SaveTempLabels)
+ IsTemporary = NameRef.starts_with(MAI->getPrivateGlobalPrefix());
+ Entry.second.Used = true;
+ Entry.second.Symbol = createSymbolImpl(&Entry, IsTemporary);
+ }
@@ -229,3 +234,3 @@ MCSymbol *MCContext::getOrCreateLSDASymbol(const Twine &FuncName) {
MCSymbolTableEntry &MCContext::getSymbolTableEntry(StringRef Name) {
- return *Symbols.insert(std::make_pair(Name, MCSymbolTableValue{})).first;
+ return *Symbols.try_emplace(Name, MCSymbolTableValue{}).first;
}
```
https://github.com/llvm/llvm-project/pull/95464
More information about the llvm-commits
mailing list