2424#include " llvm/CodeGen/GlobalISel/MIPatternMatch.h"
2525#include " llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
2626#include " llvm/Support/Debug.h"
27+ #include " llvm/CodeGen/MachineFrameInfo.h"
2728#include " llvm/Target/TargetMachine.h"
2829using namespace llvm ;
2930using namespace MIPatternMatch ;
@@ -59,13 +60,13 @@ struct Z80OutgoingValueHandler : public CallLowering::OutgoingValueHandler {
5960 }
6061
6162 void assignValueToReg (Register ValVReg, Register PhysReg,
62- CCValAssign VA) override {
63+ const CCValAssign & VA) override {
6364 MIB.addReg (PhysReg, RegState::Implicit);
6465 MIRBuilder.buildCopy (PhysReg, ValVReg);
6566 }
6667
6768 void assignValueToAddress (Register ValVReg, Register Addr, LLT MemTy,
68- MachinePointerInfo &MPO, CCValAssign &VA) override {
69+ const MachinePointerInfo &MPO, const CCValAssign &VA) override {
6970 auto MMO = MIRBuilder.getMF ().getMachineMemOperand (
7071 MPO, MachineMemOperand::MOStore, VA.getLocVT ().getStoreSize (),
7172 Align ());
@@ -123,7 +124,7 @@ struct CallArgHandler : public Z80OutgoingValueHandler {
123124 StackPushes (MIRBuilder.getInsertPt()), RegCopies(StackPushes) {}
124125
125126 void assignValueToReg (Register ValVReg, Register PhysReg,
126- CCValAssign VA) override {
127+ const CCValAssign & VA) override {
127128 auto SaveInsertPt = std::prev (MIRBuilder.getInsertPt ());
128129 --StackPushes;
129130 MIRBuilder.setInsertPt (MIRBuilder.getMBB (), RegCopies);
@@ -140,7 +141,7 @@ struct CallArgHandler : public Z80OutgoingValueHandler {
140141 }
141142
142143 void assignValueToAddress (Register ValVReg, Register Addr, LLT MemTy,
143- MachinePointerInfo &MPO, CCValAssign &VA) override {
144+ const MachinePointerInfo &MPO, const CCValAssign &VA) override {
144145 LLT SlotTy = LLT::scalar (DL.getIndexSizeInBits (0 ));
145146 if (VA.getLocVT ().getStoreSize () != SlotTy.getSizeInBytes () ||
146147 !mi_match (Addr, MRI,
@@ -167,7 +168,7 @@ struct CallArgHandler : public Z80OutgoingValueHandler {
167168 }
168169
169170 bool finalize (CCState &State) override {
170- FrameSize = State.getNextStackOffset ();
171+ FrameSize = State.getStackSize ();
171172 bool Success = Z80OutgoingValueHandler::finalize (State);
172173 MIRBuilder.setInsertPt (MIRBuilder.getMBB (), RegCopies);
173174 return Success;
@@ -215,15 +216,15 @@ struct Z80IncomingValueHandler : public CallLowering::IncomingValueHandler {
215216 }
216217
217218 void assignValueToAddress (Register ValVReg, Register Addr, LLT MemTy,
218- MachinePointerInfo &MPO, CCValAssign &VA) override {
219+ const MachinePointerInfo &MPO, const CCValAssign &VA) override {
219220 auto MMO = MIRBuilder.getMF ().getMachineMemOperand (
220221 MPO, MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant, MemTy,
221222 Align ());
222223 MIRBuilder.buildLoad (ValVReg, Addr, *MMO);
223224 }
224225
225226 void assignValueToReg (Register ValVReg, Register PhysReg,
226- CCValAssign VA) override {
227+ const CCValAssign & VA) override {
227228 markPhysRegUsed (PhysReg);
228229 MIRBuilder.buildCopy (ValVReg, PhysReg);
229230 }
@@ -249,10 +250,10 @@ struct FormalArgHandler : public Z80IncomingValueHandler {
249250 bool finalize (CCState &State) override {
250251 MachineFunction &MF = MIRBuilder.getMF ();
251252 auto &FuncInfo = *MF.getInfo <Z80MachineFunctionInfo>();
252- FuncInfo.setArgFrameSize (State.getNextStackOffset ());
253+ FuncInfo.setArgFrameSize (State.getStackSize ());
253254 if (State.isVarArg ()) {
254255 int FrameIdx = MF.getFrameInfo ().CreateFixedObject (
255- 1 , State.getNextStackOffset (), true );
256+ 1 , State.getStackSize (), true );
256257 FuncInfo.setVarArgsFrameIndex (FrameIdx);
257258 }
258259 return true ;
@@ -346,7 +347,7 @@ bool Z80CallLowering::areCalleeOutgoingArgsTailCallable(
346347
347348 // Make sure that they can fit on the caller's stack.
348349 const auto &FuncInfo = *MF.getInfo <Z80MachineFunctionInfo>();
349- if (OutInfo.getNextStackOffset () > FuncInfo.getArgFrameSize ()) {
350+ if (OutInfo.getStackSize () > FuncInfo.getArgFrameSize ()) {
350351 LLVM_DEBUG (dbgs () << " ... Cannot fit call operands on caller's stack.\n " );
351352 return false ;
352353 }
@@ -761,7 +762,7 @@ bool Z80CallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder,
761762 if (!MBB.empty ())
762763 MIRBuilder.setInstr (*MBB.begin ());
763764
764- OutgoingValueAssigner Assigner (CC_Z80);
765+ IncomingValueAssigner Assigner (CC_Z80);
765766 FormalArgHandler Handler (MIRBuilder, MRI);
766767 if (!determineAndHandleAssignments (Handler, Assigner, SplitArgs, MIRBuilder,
767768 F.getCallingConv (), F.isVarArg ()))
@@ -796,7 +797,7 @@ bool Z80CallLowering::lowerReturn(MachineIRBuilder &MIRBuilder,
796797 Type *RetTy = nullptr ;
797798 if (SRetReturnReg) {
798799 VRegs = SRetReturnReg;
799- RetTy = Type::getInt8PtrTy (Ctx);
800+ RetTy = PointerType::getUnqual (Ctx);
800801 } else if (!VRegs.empty ())
801802 RetTy = Val->getType ();
802803
0 commit comments