summaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineLICM.cpp
diff options
context:
space:
mode:
authorKazu Hirata <kazu@google.com>2024-09-30 06:49:04 -0700
committerGitHub <noreply@github.com>2024-09-30 06:49:04 -0700
commitdb9e1fb3bcc8ab950cd9b0282a29be7943ce185e (patch)
tree00d757295c856ad0674d1ce1191dc9211c20a0fa /llvm/lib/CodeGen/MachineLICM.cpp
parent47b22301da4413abbf94bb2adf61e65e33fe9edb (diff)
[MachineLICM] Avoid repeated hash lookups (NFC) (#110452)
Diffstat (limited to 'llvm/lib/CodeGen/MachineLICM.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineLICM.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/MachineLICM.cpp b/llvm/lib/CodeGen/MachineLICM.cpp
index 3289a692221b..793ad75759cc 100644
--- a/llvm/lib/CodeGen/MachineLICM.cpp
+++ b/llvm/lib/CodeGen/MachineLICM.cpp
@@ -148,13 +148,13 @@ namespace {
DenseMap<MachineLoop *, SmallVector<MachineBasicBlock *, 8>> ExitBlockMap;
bool isExitBlock(MachineLoop *CurLoop, const MachineBasicBlock *MBB) {
- if (ExitBlockMap.contains(CurLoop))
- return is_contained(ExitBlockMap[CurLoop], MBB);
-
- SmallVector<MachineBasicBlock *, 8> ExitBlocks;
- CurLoop->getExitBlocks(ExitBlocks);
- ExitBlockMap[CurLoop] = ExitBlocks;
- return is_contained(ExitBlocks, MBB);
+ auto [It, Inserted] = ExitBlockMap.try_emplace(CurLoop);
+ if (Inserted) {
+ SmallVector<MachineBasicBlock *, 8> ExitBlocks;
+ CurLoop->getExitBlocks(ExitBlocks);
+ It->second = ExitBlocks;
+ }
+ return is_contained(It->second, MBB);
}
// Track 'estimated' register pressure.
@@ -1010,12 +1010,8 @@ MachineLICMImpl::calcRegisterCost(const MachineInstr *MI, bool ConsiderSeen,
if (RCCost == 0)
continue;
const int *PS = TRI->getRegClassPressureSets(RC);
- for (; *PS != -1; ++PS) {
- if (!Cost.contains(*PS))
- Cost[*PS] = RCCost;
- else
- Cost[*PS] += RCCost;
- }
+ for (; *PS != -1; ++PS)
+ Cost[*PS] += RCCost;
}
return Cost;
}