[llvm] 383eb0b - [AArch64][GISel] Use Register instead of MCRegister for markPhysRegUsed in CallLowering. (#122853)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 16 07:01:06 PST 2025
Author: Craig Topper
Date: 2025-01-16T07:01:01-08:00
New Revision: 383eb0ba1ead7397dc633cbfa328eab254780784
URL: https://github.com/llvm/llvm-project/commit/383eb0ba1ead7397dc633cbfa328eab254780784
DIFF: https://github.com/llvm/llvm-project/commit/383eb0ba1ead7397dc633cbfa328eab254780784.diff
LOG: [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".
Added:
Modified:
llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp b/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
index 15f1c99e87246b..e4719b26cab524 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
@@ -165,7 +165,7 @@ struct IncomingArgHandler : public CallLowering::IncomingValueHandler {
void assignValueToReg(Register ValVReg, Register PhysReg,
const CCValAssign &VA) override {
- markPhysRegUsed(PhysReg);
+ markRegUsed(PhysReg);
IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA);
}
@@ -207,16 +207,16 @@ struct IncomingArgHandler : public CallLowering::IncomingValueHandler {
/// How the physical register gets marked varies between formal
/// parameters (it's a basic-block live-in), and a call instruction
/// (it's an implicit-def of the BL).
- virtual void markPhysRegUsed(MCRegister PhysReg) = 0;
+ virtual void markRegUsed(Register Reg) = 0;
};
struct FormalArgHandler : public IncomingArgHandler {
FormalArgHandler(MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
: IncomingArgHandler(MIRBuilder, MRI) {}
- void markPhysRegUsed(MCRegister PhysReg) override {
- MIRBuilder.getMRI()->addLiveIn(PhysReg);
- MIRBuilder.getMBB().addLiveIn(PhysReg);
+ void markRegUsed(Register Reg) override {
+ MIRBuilder.getMRI()->addLiveIn(Reg.asMCReg());
+ MIRBuilder.getMBB().addLiveIn(Reg.asMCReg());
}
};
@@ -225,8 +225,8 @@ struct CallReturnHandler : public IncomingArgHandler {
MachineInstrBuilder MIB)
: IncomingArgHandler(MIRBuilder, MRI), MIB(MIB) {}
- void markPhysRegUsed(MCRegister PhysReg) override {
- MIB.addDef(PhysReg, RegState::Implicit);
+ void markRegUsed(Register Reg) override {
+ MIB.addDef(Reg, RegState::Implicit);
}
MachineInstrBuilder MIB;
@@ -239,7 +239,7 @@ struct ReturnedArgCallReturnHandler : public CallReturnHandler {
MachineInstrBuilder MIB)
: CallReturnHandler(MIRBuilder, MRI, MIB) {}
- void markPhysRegUsed(MCRegister PhysReg) override {}
+ void markRegUsed(Register Reg) override {}
};
struct OutgoingArgHandler : public CallLowering::OutgoingValueHandler {
More information about the llvm-commits
mailing list