Skip to content

Commit 383eb0b

Browse files
authored
[AArch64][GISel] Use Register instead of MCRegister for markPhysRegUsed in CallLowering. (#122853)
For "returned" attribute arguments, the physical register is really a virtual register which shouldn't be stored in an MCRegister. This patch moves the conversion from Register to MCRegister into the derived classes of IncomingArgHandler. The derived class ReturnedArgCallReturnHandler does not use the register so no MCRegister is created in that case. The function and argument have been renamed to remove "Phys".
1 parent 437e1a7 commit 383eb0b

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ struct IncomingArgHandler : public CallLowering::IncomingValueHandler {
165165

166166
void assignValueToReg(Register ValVReg, Register PhysReg,
167167
const CCValAssign &VA) override {
168-
markPhysRegUsed(PhysReg);
168+
markRegUsed(PhysReg);
169169
IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA);
170170
}
171171

@@ -207,16 +207,16 @@ struct IncomingArgHandler : public CallLowering::IncomingValueHandler {
207207
/// How the physical register gets marked varies between formal
208208
/// parameters (it's a basic-block live-in), and a call instruction
209209
/// (it's an implicit-def of the BL).
210-
virtual void markPhysRegUsed(MCRegister PhysReg) = 0;
210+
virtual void markRegUsed(Register Reg) = 0;
211211
};
212212

213213
struct FormalArgHandler : public IncomingArgHandler {
214214
FormalArgHandler(MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
215215
: IncomingArgHandler(MIRBuilder, MRI) {}
216216

217-
void markPhysRegUsed(MCRegister PhysReg) override {
218-
MIRBuilder.getMRI()->addLiveIn(PhysReg);
219-
MIRBuilder.getMBB().addLiveIn(PhysReg);
217+
void markRegUsed(Register Reg) override {
218+
MIRBuilder.getMRI()->addLiveIn(Reg.asMCReg());
219+
MIRBuilder.getMBB().addLiveIn(Reg.asMCReg());
220220
}
221221
};
222222

@@ -225,8 +225,8 @@ struct CallReturnHandler : public IncomingArgHandler {
225225
MachineInstrBuilder MIB)
226226
: IncomingArgHandler(MIRBuilder, MRI), MIB(MIB) {}
227227

228-
void markPhysRegUsed(MCRegister PhysReg) override {
229-
MIB.addDef(PhysReg, RegState::Implicit);
228+
void markRegUsed(Register Reg) override {
229+
MIB.addDef(Reg, RegState::Implicit);
230230
}
231231

232232
MachineInstrBuilder MIB;
@@ -239,7 +239,7 @@ struct ReturnedArgCallReturnHandler : public CallReturnHandler {
239239
MachineInstrBuilder MIB)
240240
: CallReturnHandler(MIRBuilder, MRI, MIB) {}
241241

242-
void markPhysRegUsed(MCRegister PhysReg) override {}
242+
void markRegUsed(Register Reg) override {}
243243
};
244244

245245
struct OutgoingArgHandler : public CallLowering::OutgoingValueHandler {

0 commit comments

Comments
 (0)