From e36b9be5c0dc6d7c8d2125122ae561d5b5ff62b2 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 24 Oct 2023 11:11:08 -0700 Subject: [PATCH] [GISel] Make assignValueToReg take CCValAssign by const reference. This was previously passed by value. It used to be passed by non-const reference, but it was changed to value in D110610. I'm not sure why. --- llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h | 7 ++++--- llvm/lib/CodeGen/GlobalISel/CallLowering.cpp | 10 ++++------ .../lib/Target/AArch64/GISel/AArch64CallLowering.cpp | 4 ++-- llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp | 6 +++--- llvm/lib/Target/ARM/ARMCallLowering.cpp | 12 ++++++------ llvm/lib/Target/M68k/GISel/M68kCallLowering.cpp | 6 +++--- llvm/lib/Target/M68k/GISel/M68kCallLowering.h | 4 ++-- llvm/lib/Target/Mips/MipsCallLowering.cpp | 8 ++++---- llvm/lib/Target/PowerPC/GISel/PPCCallLowering.cpp | 6 +++--- llvm/lib/Target/PowerPC/GISel/PPCCallLowering.h | 2 +- llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp | 4 ++-- llvm/lib/Target/X86/GISel/X86CallLowering.cpp | 4 ++-- 12 files changed, 36 insertions(+), 37 deletions(-) diff --git a/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h b/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h index 6fbcb744e624a..ec0b3363f5169 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h +++ b/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h @@ -268,7 +268,7 @@ class CallLowering { /// handle the appropriate COPY (either to or from) and mark any /// relevant uses/defines as needed. virtual void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) = 0; + const CCValAssign &VA) = 0; /// The specified value has been assigned to a stack /// location. Load or store it there, with appropriate extension @@ -323,11 +323,12 @@ class CallLowering { /// Insert G_ASSERT_ZEXT/G_ASSERT_SEXT or other hint instruction based on \p /// VA, returning the new register if a hint was inserted. - Register buildExtensionHint(CCValAssign &VA, Register SrcReg, LLT NarrowTy); + Register buildExtensionHint(const CCValAssign &VA, Register SrcReg, + LLT NarrowTy); /// Provides a default implementation for argument handling. void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override; + const CCValAssign &VA) override; }; /// Base class for ValueHandlers used for arguments passed to a function call, diff --git a/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp b/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp index 78f019cff5b2f..975787a8f5e73 100644 --- a/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp +++ b/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp @@ -1184,9 +1184,8 @@ Register CallLowering::ValueHandler::extendRegister(Register ValReg, void CallLowering::ValueAssigner::anchor() {} -Register CallLowering::IncomingValueHandler::buildExtensionHint(CCValAssign &VA, - Register SrcReg, - LLT NarrowTy) { +Register CallLowering::IncomingValueHandler::buildExtensionHint( + const CCValAssign &VA, Register SrcReg, LLT NarrowTy) { switch (VA.getLocInfo()) { case CCValAssign::LocInfo::ZExt: { return MIRBuilder @@ -1226,9 +1225,8 @@ static bool isCopyCompatibleType(LLT SrcTy, LLT DstTy) { (DstTy.isPointer() && SrcTy.isScalar()); } -void CallLowering::IncomingValueHandler::assignValueToReg(Register ValVReg, - Register PhysReg, - CCValAssign VA) { +void CallLowering::IncomingValueHandler::assignValueToReg( + Register ValVReg, Register PhysReg, const CCValAssign &VA) { const MVT LocVT = VA.getLocVT(); const LLT LocTy(LocVT); const LLT RegTy = MRI.getType(ValVReg); diff --git a/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp b/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp index 02c1ad49c0004..2d6cc870f98e7 100644 --- a/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp +++ b/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp @@ -158,7 +158,7 @@ struct IncomingArgHandler : public CallLowering::IncomingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { markPhysRegUsed(PhysReg); IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA); } @@ -284,7 +284,7 @@ struct OutgoingArgHandler : public CallLowering::OutgoingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { MIB.addUse(PhysReg, RegState::Implicit); Register ExtReg = extendRegister(ValVReg, VA); MIRBuilder.buildCopy(PhysReg, ExtReg); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp index 08bce3b2fc692..bc5f1703260c3 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp @@ -62,7 +62,7 @@ struct AMDGPUOutgoingValueHandler : public CallLowering::OutgoingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { Register ExtReg = extendRegisterMin32(*this, ValVReg, VA); // If this is a scalar return, insert a readfirstlane just in case the value @@ -118,7 +118,7 @@ struct AMDGPUIncomingArgHandler : public CallLowering::IncomingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { markPhysRegUsed(PhysReg); if (VA.getLocVT().getSizeInBits() < 32) { @@ -231,7 +231,7 @@ struct AMDGPUOutgoingArgHandler : public AMDGPUOutgoingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { MIB.addUse(PhysReg, RegState::Implicit); Register ExtReg = extendRegisterMin32(*this, ValVReg, VA); MIRBuilder.buildCopy(PhysReg, ExtReg); diff --git a/llvm/lib/Target/ARM/ARMCallLowering.cpp b/llvm/lib/Target/ARM/ARMCallLowering.cpp index d1987e32f0e0b..f9d9930cec6d0 100644 --- a/llvm/lib/Target/ARM/ARMCallLowering.cpp +++ b/llvm/lib/Target/ARM/ARMCallLowering.cpp @@ -110,7 +110,7 @@ struct ARMOutgoingValueHandler : public CallLowering::OutgoingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { assert(VA.isRegLoc() && "Value shouldn't be assigned to reg"); assert(VA.getLocReg() == PhysReg && "Assigning to the wrong reg?"); @@ -136,14 +136,14 @@ struct ARMOutgoingValueHandler : public CallLowering::OutgoingValueHandler { std::function *Thunk) override { assert(Arg.Regs.size() == 1 && "Can't handle multple regs yet"); - CCValAssign VA = VAs[0]; + const CCValAssign &VA = VAs[0]; assert(VA.needsCustom() && "Value doesn't need custom handling"); // Custom lowering for other types, such as f16, is currently not supported if (VA.getValVT() != MVT::f64) return 0; - CCValAssign NextVA = VAs[1]; + const CCValAssign &NextVA = VAs[1]; assert(NextVA.needsCustom() && "Value doesn't need custom handling"); assert(NextVA.getValVT() == MVT::f64 && "Unsupported type"); @@ -283,7 +283,7 @@ struct ARMIncomingValueHandler : public CallLowering::IncomingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { assert(VA.isRegLoc() && "Value shouldn't be assigned to reg"); assert(VA.getLocReg() == PhysReg && "Assigning to the wrong reg?"); @@ -312,14 +312,14 @@ struct ARMIncomingValueHandler : public CallLowering::IncomingValueHandler { std::function *Thunk) override { assert(Arg.Regs.size() == 1 && "Can't handle multple regs yet"); - CCValAssign VA = VAs[0]; + const CCValAssign &VA = VAs[0]; assert(VA.needsCustom() && "Value doesn't need custom handling"); // Custom lowering for other types, such as f16, is currently not supported if (VA.getValVT() != MVT::f64) return 0; - CCValAssign NextVA = VAs[1]; + const CCValAssign &NextVA = VAs[1]; assert(NextVA.needsCustom() && "Value doesn't need custom handling"); assert(NextVA.getValVT() == MVT::f64 && "Unsupported type"); diff --git a/llvm/lib/Target/M68k/GISel/M68kCallLowering.cpp b/llvm/lib/Target/M68k/GISel/M68kCallLowering.cpp index feeee198b1d89..bb63516e957fd 100644 --- a/llvm/lib/Target/M68k/GISel/M68kCallLowering.cpp +++ b/llvm/lib/Target/M68k/GISel/M68kCallLowering.cpp @@ -36,7 +36,7 @@ struct M68kOutgoingArgHandler : public CallLowering::OutgoingValueHandler { STI(MIRBuilder.getMF().getSubtarget()) {} void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { MIB.addUse(PhysReg, RegState::Implicit); Register ExtReg = extendRegister(ValVReg, VA); MIRBuilder.buildCopy(PhysReg, ExtReg); @@ -127,7 +127,7 @@ bool M68kCallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder, void M68kIncomingValueHandler::assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) { + const CCValAssign &VA) { MIRBuilder.getMRI()->addLiveIn(PhysReg); MIRBuilder.getMBB().addLiveIn(PhysReg); IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA); @@ -160,7 +160,7 @@ Register M68kIncomingValueHandler::getStackAddress(uint64_t Size, } void CallReturnHandler::assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) { + const CCValAssign &VA) { MIB.addDef(PhysReg, RegState::Implicit); MIRBuilder.buildCopy(ValVReg, PhysReg); } diff --git a/llvm/lib/Target/M68k/GISel/M68kCallLowering.h b/llvm/lib/Target/M68k/GISel/M68kCallLowering.h index 9fde508c18845..7644e6cffbb1b 100644 --- a/llvm/lib/Target/M68k/GISel/M68kCallLowering.h +++ b/llvm/lib/Target/M68k/GISel/M68kCallLowering.h @@ -53,7 +53,7 @@ struct M68kIncomingValueHandler : public CallLowering::IncomingValueHandler { private: void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override; + const CCValAssign &VA) override; void assignValueToAddress(Register ValVReg, Register Addr, LLT MemTy, const MachinePointerInfo &MPO, @@ -76,7 +76,7 @@ struct CallReturnHandler : public M68kIncomingValueHandler { private: void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override; + const CCValAssign &VA) override; MachineInstrBuilder &MIB; }; diff --git a/llvm/lib/Target/Mips/MipsCallLowering.cpp b/llvm/lib/Target/Mips/MipsCallLowering.cpp index 2c276ffa4aebb..b856290211277 100644 --- a/llvm/lib/Target/Mips/MipsCallLowering.cpp +++ b/llvm/lib/Target/Mips/MipsCallLowering.cpp @@ -93,7 +93,7 @@ class MipsIncomingValueHandler : public CallLowering::IncomingValueHandler { private: void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override; + const CCValAssign &VA) override; Register getStackAddress(uint64_t Size, int64_t Offset, MachinePointerInfo &MPO, @@ -130,7 +130,7 @@ class CallReturnHandler : public MipsIncomingValueHandler { void MipsIncomingValueHandler::assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) { + const CCValAssign &VA) { markPhysRegUsed(PhysReg); IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA); } @@ -200,7 +200,7 @@ class MipsOutgoingValueHandler : public CallLowering::OutgoingValueHandler { private: void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override; + const CCValAssign &VA) override; Register getStackAddress(uint64_t Size, int64_t Offset, MachinePointerInfo &MPO, @@ -219,7 +219,7 @@ class MipsOutgoingValueHandler : public CallLowering::OutgoingValueHandler { void MipsOutgoingValueHandler::assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) { + const CCValAssign &VA) { Register ExtReg = extendRegister(ValVReg, VA); MIRBuilder.buildCopy(PhysReg, ExtReg); MIB.addUse(PhysReg, RegState::Implicit); diff --git a/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.cpp b/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.cpp index 2730ee32430df..99ecc3fe360d1 100644 --- a/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.cpp +++ b/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.cpp @@ -36,7 +36,7 @@ struct OutgoingArgHandler : public CallLowering::OutgoingValueHandler { : OutgoingValueHandler(MIRBuilder, MRI), MIB(MIB) {} void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override; + const CCValAssign &VA) override; void assignValueToAddress(Register ValVReg, Register Addr, LLT MemTy, const MachinePointerInfo &MPO, const CCValAssign &VA) override; @@ -49,7 +49,7 @@ struct OutgoingArgHandler : public CallLowering::OutgoingValueHandler { } // namespace void OutgoingArgHandler::assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) { + const CCValAssign &VA) { MIB.addUse(PhysReg, RegState::Implicit); Register ExtReg = extendRegister(ValVReg, VA); MIRBuilder.buildCopy(PhysReg, ExtReg); @@ -144,7 +144,7 @@ bool PPCCallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder, void PPCIncomingValueHandler::assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) { + const CCValAssign &VA) { markPhysRegUsed(PhysReg); IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA); } diff --git a/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.h b/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.h index 43152305ff7e0..17e8c57e563f8 100644 --- a/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.h +++ b/llvm/lib/Target/PowerPC/GISel/PPCCallLowering.h @@ -46,7 +46,7 @@ class PPCIncomingValueHandler : public CallLowering::IncomingValueHandler { private: void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override; + const CCValAssign &VA) override; void assignValueToAddress(Register ValVReg, Register Addr, LLT MemTy, const MachinePointerInfo &MPO, diff --git a/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp b/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp index ec3825a6f780e..be1771b19316f 100644 --- a/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp +++ b/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp @@ -93,7 +93,7 @@ struct RISCVOutgoingValueHandler : public CallLowering::OutgoingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { Register ExtReg = extendRegister(ValVReg, VA); MIRBuilder.buildCopy(PhysReg, ExtReg); MIB.addUse(PhysReg, RegState::Implicit); @@ -165,7 +165,7 @@ struct RISCVIncomingValueHandler : public CallLowering::IncomingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { markPhysRegUsed(PhysReg); IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA); } diff --git a/llvm/lib/Target/X86/GISel/X86CallLowering.cpp b/llvm/lib/Target/X86/GISel/X86CallLowering.cpp index d1e28a071c995..e69e77e76e6e7 100644 --- a/llvm/lib/Target/X86/GISel/X86CallLowering.cpp +++ b/llvm/lib/Target/X86/GISel/X86CallLowering.cpp @@ -106,7 +106,7 @@ struct X86OutgoingValueHandler : public CallLowering::OutgoingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { MIB.addUse(PhysReg, RegState::Implicit); Register ExtReg = extendRegister(ValVReg, VA); MIRBuilder.buildCopy(PhysReg, ExtReg); @@ -212,7 +212,7 @@ struct X86IncomingValueHandler : public CallLowering::IncomingValueHandler { } void assignValueToReg(Register ValVReg, Register PhysReg, - CCValAssign VA) override { + const CCValAssign &VA) override { markPhysRegUsed(PhysReg); IncomingValueHandler::assignValueToReg(ValVReg, PhysReg, VA); }