@@ -71,8 +71,6 @@ void ReachingDefAnalysis::enterBasicBlock(MachineBasicBlock *MBB) {
71
71
" Unexpected basic block number." );
72
72
MBBReachingDefs.startBasicBlock (MBBNumber, NumRegUnits);
73
73
74
- MBBFrameObjsReachingDefs[MBBNumber].resize (NumStackObjects, {-1 });
75
-
76
74
// Reset instruction counter in each basic block.
77
75
CurInstr = 0 ;
78
76
@@ -150,8 +148,16 @@ void ReachingDefAnalysis::processDefs(MachineInstr *MI) {
150
148
assert (FrameIndex >= 0 && " Can't handle negative frame indicies yet!" );
151
149
if (!isFIDef (*MI, FrameIndex, TII))
152
150
continue ;
153
- MBBFrameObjsReachingDefs[MBBNumber][FrameIndex - ObjectIndexBegin]
154
- .push_back (CurInstr);
151
+ if (MBBFrameObjsReachingDefs.contains (MBBNumber)) {
152
+ auto Frame2InstrIdx = MBBFrameObjsReachingDefs[MBBNumber];
153
+ if (Frame2InstrIdx.count (FrameIndex - ObjectIndexBegin) > 0 )
154
+ Frame2InstrIdx[FrameIndex - ObjectIndexBegin].push_back (CurInstr);
155
+ else
156
+ Frame2InstrIdx[FrameIndex - ObjectIndexBegin] = {CurInstr};
157
+ } else {
158
+ MBBFrameObjsReachingDefs[MBBNumber] = {
159
+ {FrameIndex - ObjectIndexBegin, {CurInstr}}};
160
+ }
155
161
}
156
162
if (!isValidRegDef (MO))
157
163
continue ;
@@ -307,7 +313,6 @@ void ReachingDefAnalysis::init() {
307
313
NumStackObjects = MF->getFrameInfo ().getNumObjects ();
308
314
ObjectIndexBegin = MF->getFrameInfo ().getObjectIndexBegin ();
309
315
MBBReachingDefs.init (MF->getNumBlockIDs ());
310
- MBBFrameObjsReachingDefs.resize (MF->getNumBlockIDs ());
311
316
// Initialize the MBBOutRegsInfos
312
317
MBBOutRegsInfos.resize (MF->getNumBlockIDs ());
313
318
LoopTraversal Traversal;
@@ -344,8 +349,8 @@ int ReachingDefAnalysis::getReachingDef(MachineInstr *MI, Register Reg) const {
344
349
345
350
if (Register::isStackSlot (Reg)) {
346
351
int FrameIndex = Register::stackSlot2Index (Reg);
347
- for (int Def :
348
- MBBFrameObjsReachingDefs[MBBNumber][ FrameIndex - ObjectIndexBegin] ) {
352
+ for (int Def : MBBFrameObjsReachingDefs. lookup (MBBNumber). lookup (
353
+ FrameIndex - ObjectIndexBegin) ) {
349
354
if (Def >= InstId)
350
355
break ;
351
356
DefRes = Def;
0 commit comments