Skip to content

Commit 5d52ad8

Browse files
committed
PeepholeOpt: Avoid double map lookup
1 parent 83ca720 commit 5d52ad8

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

llvm/lib/CodeGen/PeepholeOptimizer.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,8 +1035,10 @@ bool PeepholeOptimizer::findNextSource(RegSubRegPair RegSubReg,
10351035
return false;
10361036

10371037
// Insert the Def -> Use entry for the recently found source.
1038-
ValueTrackerResult CurSrcRes = RewriteMap.lookup(CurSrcPair);
1039-
if (CurSrcRes.isValid()) {
1038+
auto [InsertPt, WasInserted] = RewriteMap.try_emplace(CurSrcPair, Res);
1039+
1040+
ValueTrackerResult CurSrcRes = InsertPt->second;
1041+
if (!WasInserted) {
10401042
assert(CurSrcRes == Res && "ValueTrackerResult found must match");
10411043
// An existent entry with multiple sources is a PHI cycle we must avoid.
10421044
// Otherwise it's an entry with a valid next source we already found.
@@ -1047,7 +1049,6 @@ bool PeepholeOptimizer::findNextSource(RegSubRegPair RegSubReg,
10471049
}
10481050
break;
10491051
}
1050-
RewriteMap.insert(std::make_pair(CurSrcPair, Res));
10511052

10521053
// ValueTrackerResult usually have one source unless it's the result from
10531054
// a PHI instruction. Add the found PHI edges to be looked up further.

0 commit comments

Comments
 (0)