Skip to content

Commit 8cf5f73

Browse files
committed
[RISCV] Avoid RegScavenger::forward in RISCVMakeCompressibleOpt
RegScavenger::backward is preferred because it does not rely on accurate kill flags. Differential Revision: https://reviews.llvm.org/D150562
1 parent 64599ac commit 8cf5f73

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

llvm/lib/Target/RISCV/RISCVMakeCompressible.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,6 @@ static Register analyzeCompressibleUses(MachineInstr &FirstMI,
227227
const TargetRegisterInfo *TRI =
228228
MBB.getParent()->getSubtarget().getRegisterInfo();
229229

230-
RegScavenger RS;
231-
RS.enterBasicBlock(MBB);
232-
233230
for (MachineBasicBlock::instr_iterator I = FirstMI.getIterator(),
234231
E = MBB.instr_end();
235232
I != E; ++I) {
@@ -238,14 +235,8 @@ static Register analyzeCompressibleUses(MachineInstr &FirstMI,
238235
// Determine if this is an instruction which would benefit from using the
239236
// new register.
240237
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)
247239
MIs.push_back(&MI);
248-
}
249240

250241
// If RegImm.Reg is modified by this instruction, then we cannot optimize
251242
// past this instruction. If the register is already compressed, then it may
@@ -278,6 +269,9 @@ static Register analyzeCompressibleUses(MachineInstr &FirstMI,
278269
else
279270
return RISCV::NoRegister;
280271

272+
RegScavenger RS;
273+
RS.enterBasicBlockEnd(MBB);
274+
RS.backward(MIs.back()->getIterator());
281275
return RS.scavengeRegisterBackwards(*RCToScavenge, FirstMI.getIterator(),
282276
/*RestoreAfter=*/false, /*SPAdj=*/0,
283277
/*AllowSpill=*/false);

0 commit comments

Comments
 (0)