Skip to content

Commit 4539a03

Browse files
[ReachingDefAnalysis][NFC] Fix management of MBBFrameObjsReachingDefs
1 parent 4a78179 commit 4539a03

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

llvm/lib/CodeGen/ReachingDefAnalysis.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,9 @@ 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-
if (MBBFrameObjsReachingDefs.contains(MBBNumber)) {
151-
auto Frame2InstrIdx = MBBFrameObjsReachingDefs[MBBNumber];
152-
if (Frame2InstrIdx.count(FrameIndex - ObjectIndexBegin) > 0)
153-
Frame2InstrIdx[FrameIndex - ObjectIndexBegin].push_back(CurInstr);
154-
else
155-
Frame2InstrIdx[FrameIndex - ObjectIndexBegin] = {CurInstr};
156-
} else {
157-
MBBFrameObjsReachingDefs[MBBNumber] = {
158-
{FrameIndex - ObjectIndexBegin, {CurInstr}}};
159-
}
150+
151+
int Key = FrameIndex - ObjectIndexBegin;
152+
MBBFrameObjsReachingDefs[MBBNumber][Key].push_back(CurInstr);
160153
}
161154
if (!isValidRegDef(MO))
162155
continue;
@@ -348,8 +341,19 @@ int ReachingDefAnalysis::getReachingDef(MachineInstr *MI, Register Reg) const {
348341

349342
if (Reg.isStack()) {
350343
int FrameIndex = Reg.stackSlotIndex();
351-
for (int Def : MBBFrameObjsReachingDefs.lookup(MBBNumber).lookup(
352-
FrameIndex - ObjectIndexBegin)) {
344+
int Key = FrameIndex - ObjectIndexBegin;
345+
346+
// 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())
353+
return LatestDef;
354+
auto &Defs = Lookup2->second;
355+
356+
for (int Def : Defs) {
353357
if (Def >= InstId)
354358
break;
355359
DefRes = Def;

llvm/test/CodeGen/RISCV/rda-stack.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ body: |
174174
; CHECK-NEXT: 2: SD $x10, %stack.1, 0 :: (store (s64))
175175
; CHECK-EMPTY:
176176
; CHECK-NEXT: $x11:{ }
177-
; CHECK-NEXT: %stack.1:{ }
177+
; CHECK-NEXT: %stack.1:{ 2 }
178178
; CHECK-NEXT: 3: SD $x11, %stack.1, 0 :: (store (s64))
179179
; CHECK-EMPTY:
180180
; CHECK-NEXT: 4: PseudoRET

0 commit comments

Comments
 (0)