[llvm] [GlobalISel] Avoid double DenseMap lookups in ValueToVRegInfo (NFC) (PR #221741)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 7 07:00:07 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-globalisel
Author: Cullen Rhodes (c-rhodes)
<details>
<summary>Changes</summary>
Assisted-by: codex
---
Full diff: https://github.com/llvm/llvm-project/pull/221741.diff
1 Files Affected:
- (modified) llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp (+10-23)
``````````diff
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index ee4bcf773433d..e8cc900af1eac 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -129,19 +129,23 @@ class IRTranslatorImpl {
inline const_vreg_iterator vregs_end() const { return ValToVRegs.end(); }
VRegListT *getVRegs(const Value &V) {
- auto It = ValToVRegs.find(&V);
- if (It != ValToVRegs.end())
+ auto [It, Inserted] = ValToVRegs.try_emplace(&V);
+ if (!Inserted)
return It->second;
- return insertVRegs(V);
+ // We placement new using our fast allocator since we never try to free
+ // the vectors until translation is finished.
+ It->second = new (VRegAlloc.Allocate()) VRegListT();
+ return It->second;
}
OffsetListT *getOffsets(const Value &V) {
- auto It = TypeToOffsets.find(V.getType());
- if (It != TypeToOffsets.end())
+ auto [It, Inserted] = TypeToOffsets.try_emplace(V.getType());
+ if (!Inserted)
return It->second;
- return insertOffsets(V);
+ It->second = new (OffsetAlloc.Allocate()) OffsetListT();
+ return It->second;
}
const_vreg_iterator findVRegs(const Value &V) const {
@@ -158,23 +162,6 @@ class IRTranslatorImpl {
}
private:
- VRegListT *insertVRegs(const Value &V) {
- assert(!ValToVRegs.contains(&V) && "Value already exists");
-
- // We placement new using our fast allocator since we never try to free
- // the vectors until translation is finished.
- auto *VRegList = new (VRegAlloc.Allocate()) VRegListT();
- ValToVRegs[&V] = VRegList;
- return VRegList;
- }
-
- OffsetListT *insertOffsets(const Value &V) {
- assert(!TypeToOffsets.contains(V.getType()) && "Type already exists");
-
- auto *OffsetList = new (OffsetAlloc.Allocate()) OffsetListT();
- TypeToOffsets[V.getType()] = OffsetList;
- return OffsetList;
- }
SpecificBumpPtrAllocator<VRegListT> VRegAlloc;
SpecificBumpPtrAllocator<OffsetListT> OffsetAlloc;
``````````
</details>
https://github.com/llvm/llvm-project/pull/221741
More information about the llvm-commits
mailing list