@@ -179,19 +179,11 @@ class RegReloadCache {
179
179
public:
180
180
RegReloadCache () = default ;
181
181
182
- // Record reload of Reg from FI in block MBB
183
- void recordReload (Register Reg, int FI, const MachineBasicBlock *MBB) {
182
+ // Record reload of Reg from FI in block MBB if not present yet.
183
+ // Return true if the reload is successfully recorded.
184
+ bool tryRecordReload (Register Reg, int FI, const MachineBasicBlock *MBB) {
184
185
RegSlotPair RSP (Reg, FI);
185
- auto Res = Reloads[MBB].insert (RSP);
186
- (void )Res;
187
- assert (Res.second && " reload already exists" );
188
- }
189
-
190
- // Does basic block MBB contains reload of Reg from FI?
191
- bool hasReload (Register Reg, int FI, const MachineBasicBlock *MBB) {
192
- RegSlotPair RSP (Reg, FI);
193
- auto It = Reloads.find (MBB);
194
- return It != Reloads.end () && It->second .count (RSP);
186
+ return Reloads[MBB].insert (RSP).second ;
195
187
}
196
188
};
197
189
@@ -459,8 +451,7 @@ class StatepointState {
459
451
LLVM_DEBUG (dbgs () << " Reloading " << printReg (Reg, &TRI) << " from FI "
460
452
<< RegToSlotIdx[Reg] << " after statepoint\n " );
461
453
462
- if (EHPad && !RC.hasReload (Reg, RegToSlotIdx[Reg], EHPad)) {
463
- RC.recordReload (Reg, RegToSlotIdx[Reg], EHPad);
454
+ if (EHPad && RC.tryRecordReload (Reg, RegToSlotIdx[Reg], EHPad)) {
464
455
auto EHPadInsertPoint =
465
456
EHPad->SkipPHIsLabelsAndDebug (EHPad->begin (), Reg);
466
457
insertReloadBefore (Reg, EHPadInsertPoint, EHPad);
0 commit comments