Skip to content

Commit eab7c39

Browse files
fixup! use FrameIndex as key; simplify map
1 parent af0058b commit eab7c39

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed

llvm/include/llvm/CodeGen/ReachingDefAnalysis.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,12 @@ class ReachingDefAnalysis : public MachineFunctionPass {
141141
DenseMap<MachineInstr *, int> InstIds;
142142

143143
MBBReachingDefsInfo MBBReachingDefs;
144+
145+
/// MBBFrameObjsReachingDefs[{i, j}] is a list of instruction indices
146+
/// (relative to begining of MBB i) that define frame index j in MBB i. This
147+
/// is used in answering reaching definition queries.
144148
using MBBFrameObjsReachingDefsInfo =
145-
DenseMap<unsigned, DenseMap<int, SmallVector<int>>>;
146-
// MBBFrameObjsReachingDefs[i][j] is a list of instruction indices (relative
147-
// to begining of MBB) that define frame index (j +
148-
// MF->getFrameInfo().getObjectIndexBegin()) in MBB i. This is used in
149-
// answering reaching definition queries.
149+
DenseMap<std::pair<unsigned, int>, SmallVector<int>>;
150150
MBBFrameObjsReachingDefsInfo MBBFrameObjsReachingDefs;
151151

152152
/// Default values are 'nothing happened a long time ago'.

llvm/lib/CodeGen/ReachingDefAnalysis.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,7 @@ void ReachingDefAnalysis::processDefs(MachineInstr *MI) {
147147
assert(FrameIndex >= 0 && "Can't handle negative frame indicies yet!");
148148
if (!isFIDef(*MI, FrameIndex, TII))
149149
continue;
150-
151-
int Key = FrameIndex - ObjectIndexBegin;
152-
MBBFrameObjsReachingDefs[MBBNumber][Key].push_back(CurInstr);
150+
MBBFrameObjsReachingDefs[{MBBNumber, FrameIndex}].push_back(CurInstr);
153151
}
154152
if (!isValidRegDef(MO))
155153
continue;
@@ -344,15 +342,10 @@ int ReachingDefAnalysis::getReachingDef(MachineInstr *MI, Register Reg) const {
344342
int Key = FrameIndex - ObjectIndexBegin;
345343

346344
// Check that there was a reaching def.
347-
auto Lookup1 = MBBFrameObjsReachingDefs.find(MBBNumber);
348-
if (Lookup1 == MBBFrameObjsReachingDefs.end())
349-
return LatestDef;
350-
auto &InnerMap = Lookup1->second;
351-
auto Lookup2 = InnerMap.find(Key);
352-
if (Lookup2 == InnerMap.end())
345+
auto Lookup = MBBFrameObjsReachingDefs.find({MBBNumber, Key});
346+
if (Lookup == MBBFrameObjsReachingDefs.end())
353347
return LatestDef;
354-
auto &Defs = Lookup2->second;
355-
348+
auto &Defs = Lookup->second;
356349
for (int Def : Defs) {
357350
if (Def >= InstId)
358351
break;

0 commit comments

Comments
 (0)