[llvm] [AArch64][GISel] Use Register instead of MCRegister for markPhysRegUsed in CallLowering. (PR #122853)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 13 19:57:44 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: Craig Topper (topperc)
<details>
<summary>Changes</summary>
For "returned" attribute arguments, the physical register is really a
virtual register which shouldn't be stored in an MCRegister. This
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.
I can remove Phys from function name for clarity if we want.
---
Full diff: https://github.com/llvm/llvm-project/pull/122853.diff
1 Files Affected:
- (modified) llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp (+4-4)
``````````diff
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp b/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
index 15f1c99e87246b..3fceb922f35520 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
@@ -207,14 +207,14 @@ 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 markPhysRegUsed(Register PhysReg) = 0;
};
struct FormalArgHandler : public IncomingArgHandler {
FormalArgHandler(MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
: IncomingArgHandler(MIRBuilder, MRI) {}
- void markPhysRegUsed(MCRegister PhysReg) override {
+ void markPhysRegUsed(Register PhysReg) override {
MIRBuilder.getMRI()->addLiveIn(PhysReg);
MIRBuilder.getMBB().addLiveIn(PhysReg);
}
@@ -225,7 +225,7 @@ struct CallReturnHandler : public IncomingArgHandler {
MachineInstrBuilder MIB)
: IncomingArgHandler(MIRBuilder, MRI), MIB(MIB) {}
- void markPhysRegUsed(MCRegister PhysReg) override {
+ void markPhysRegUsed(Register PhysReg) override {
MIB.addDef(PhysReg, RegState::Implicit);
}
@@ -239,7 +239,7 @@ struct ReturnedArgCallReturnHandler : public CallReturnHandler {
MachineInstrBuilder MIB)
: CallReturnHandler(MIRBuilder, MRI, MIB) {}
- void markPhysRegUsed(MCRegister PhysReg) override {}
+ void markPhysRegUsed(Register PhysReg) override {}
};
struct OutgoingArgHandler : public CallLowering::OutgoingValueHandler {
``````````
</details>
https://github.com/llvm/llvm-project/pull/122853
More information about the llvm-commits
mailing list