@@ -227,9 +227,6 @@ static Register analyzeCompressibleUses(MachineInstr &FirstMI,
227
227
const TargetRegisterInfo *TRI =
228
228
MBB.getParent ()->getSubtarget ().getRegisterInfo ();
229
229
230
- RegScavenger RS;
231
- RS.enterBasicBlock (MBB);
232
-
233
230
for (MachineBasicBlock::instr_iterator I = FirstMI.getIterator (),
234
231
E = MBB.instr_end ();
235
232
I != E; ++I) {
@@ -238,14 +235,8 @@ static Register analyzeCompressibleUses(MachineInstr &FirstMI,
238
235
// Determine if this is an instruction which would benefit from using the
239
236
// new register.
240
237
RegImmPair CandidateRegImm = getRegImmPairPreventingCompression (MI);
241
- if (CandidateRegImm.Reg == RegImm.Reg &&
242
- CandidateRegImm.Imm == RegImm.Imm ) {
243
- // Advance tracking since the value in the new register must be live for
244
- // this instruction too.
245
- RS.forward (I);
246
-
238
+ if (CandidateRegImm.Reg == RegImm.Reg && CandidateRegImm.Imm == RegImm.Imm )
247
239
MIs.push_back (&MI);
248
- }
249
240
250
241
// If RegImm.Reg is modified by this instruction, then we cannot optimize
251
242
// past this instruction. If the register is already compressed, then it may
@@ -278,6 +269,9 @@ static Register analyzeCompressibleUses(MachineInstr &FirstMI,
278
269
else
279
270
return RISCV::NoRegister;
280
271
272
+ RegScavenger RS;
273
+ RS.enterBasicBlockEnd (MBB);
274
+ RS.backward (MIs.back ()->getIterator ());
281
275
return RS.scavengeRegisterBackwards (*RCToScavenge, FirstMI.getIterator (),
282
276
/* RestoreAfter=*/ false , /* SPAdj=*/ 0 ,
283
277
/* AllowSpill=*/ false );
0 commit comments