[llvm] [CodeGen] Avoid repeated hash lookups (NFC) (PR #128300)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Feb 22 00:08:42 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-regalloc
Author: Kazu Hirata (kazutakahirata)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/128300.diff
1 Files Affected:
- (modified) llvm/lib/CodeGen/InlineSpiller.cpp (+8-11)
``````````diff
diff --git a/llvm/lib/CodeGen/InlineSpiller.cpp b/llvm/lib/CodeGen/InlineSpiller.cpp
index 3834a6d7a355e..919dca112b69f 100644
--- a/llvm/lib/CodeGen/InlineSpiller.cpp
+++ b/llvm/lib/CodeGen/InlineSpiller.cpp
@@ -1545,24 +1545,21 @@ void HoistSpillHelper::runHoistSpills(
for (MachineDomTreeNode *Child : (*RIt)->children()) {
if (!SpillsInSubTreeMap.contains(Child))
continue;
- // The stmt "SpillsInSubTree = SpillsInSubTreeMap[*RIt].first" below
+ // The stmt "auto &[...] = SpillsInSubTreeMap[*RIt]" below
// should be placed before getting the begin and end iterators of
// SpillsInSubTreeMap[Child].first, or else the iterators may be
// invalidated when SpillsInSubTreeMap[*RIt] is seen the first time
// and the map grows and then the original buckets in the map are moved.
- SmallPtrSet<MachineDomTreeNode *, 16> &SpillsInSubTree =
- SpillsInSubTreeMap[*RIt].first;
- BlockFrequency &SubTreeCost = SpillsInSubTreeMap[*RIt].second;
- SubTreeCost += SpillsInSubTreeMap[Child].second;
- auto BI = SpillsInSubTreeMap[Child].first.begin();
- auto EI = SpillsInSubTreeMap[Child].first.end();
+ auto &[SpillsInSubTree, SubTreeCost] = SpillsInSubTreeMap[*RIt];
+ auto ChildIt = SpillsInSubTreeMap.find(Child);
+ SubTreeCost += ChildIt->second.second;
+ auto BI = ChildIt->second.first.begin();
+ auto EI = ChildIt->second.first.end();
SpillsInSubTree.insert(BI, EI);
- SpillsInSubTreeMap.erase(Child);
+ SpillsInSubTreeMap.erase(ChildIt);
}
- SmallPtrSet<MachineDomTreeNode *, 16> &SpillsInSubTree =
- SpillsInSubTreeMap[*RIt].first;
- BlockFrequency &SubTreeCost = SpillsInSubTreeMap[*RIt].second;
+ auto &[SpillsInSubTree, SubTreeCost] = SpillsInSubTreeMap[*RIt];
// No spills in subtree, simply continue.
if (SpillsInSubTree.empty())
continue;
``````````
</details>
https://github.com/llvm/llvm-project/pull/128300
More information about the llvm-commits
mailing list