@@ -317,35 +317,6 @@ bool AMDGPUCallLowering::canLowerReturn(MachineFunction &MF,
317
317
return checkReturn (CCInfo, Outs, TLI.CCAssignFnForReturn (CallConv, IsVarArg));
318
318
}
319
319
320
- // / Replace CallLowering::determineAndHandleAssignments() because we need to
321
- // / reserve ScratchRSrcReg when necessary.
322
- // / TODO: Investigate if reserving ScratchRSrcReg can be moved to calling conv
323
- // / functions. If so, then this function is not needed anymore -- we can just
324
- // / use CallLowering::determineAndHandleAssignments() as before.
325
- bool AMDGPUCallLowering::determineAndHandleAssignmentsLocal (
326
- ValueHandler &Handler, ValueAssigner &Assigner,
327
- SmallVectorImpl<ArgInfo> &Args, MachineIRBuilder &MIRBuilder,
328
- CallingConv::ID CallConv, bool IsVarArg) const {
329
-
330
- MachineFunction &MF = MIRBuilder.getMF ();
331
- const Function &F = MF.getFunction ();
332
-
333
- SmallVector<CCValAssign, 16 > ArgLocs;
334
-
335
- CCState CCInfo (CallConv, IsVarArg, MF, ArgLocs, F.getContext ());
336
-
337
- const GCNSubtarget &ST = MF.getSubtarget <GCNSubtarget>();
338
- if (!ST.enableFlatScratch ()) {
339
- SIMachineFunctionInfo *FuncInfo = MF.getInfo <SIMachineFunctionInfo>();
340
- CCInfo.AllocateReg (FuncInfo->getScratchRSrcReg ());
341
- }
342
-
343
- if (!determineAssignments (Assigner, Args, CCInfo))
344
- return false ;
345
-
346
- return handleAssignments (Handler, Args, CCInfo, ArgLocs, MIRBuilder);
347
- }
348
-
349
320
// / Lower the return value for the already existing \p Ret. This assumes that
350
321
// / \p B's insertion point is correct.
351
322
bool AMDGPUCallLowering::lowerReturnVal (MachineIRBuilder &B,
@@ -409,8 +380,16 @@ bool AMDGPUCallLowering::lowerReturnVal(MachineIRBuilder &B,
409
380
OutgoingValueAssigner Assigner (AssignFn);
410
381
AMDGPUOutgoingValueHandler RetHandler (B, *MRI, Ret);
411
382
412
- return determineAndHandleAssignmentsLocal (RetHandler, Assigner, SplitRetInfos,
413
- B, CC, F.isVarArg ());
383
+ SmallVector<CCValAssign, 16 > ArgLocs;
384
+ CCState CCInfo (CC, F.isVarArg (), MF, ArgLocs, F.getContext ());
385
+
386
+ const GCNSubtarget &ST = MF.getSubtarget <GCNSubtarget>();
387
+ if (!ST.enableFlatScratch ()) {
388
+ SIMachineFunctionInfo *FuncInfo = MF.getInfo <SIMachineFunctionInfo>();
389
+ CCInfo.AllocateReg (FuncInfo->getScratchRSrcReg ());
390
+ }
391
+ return determineAndHandleAssignments (RetHandler, Assigner, SplitRetInfos, B,
392
+ CCInfo, ArgLocs);
414
393
}
415
394
416
395
bool AMDGPUCallLowering::lowerReturn (MachineIRBuilder &B, const Value *Val,
@@ -1575,9 +1554,17 @@ bool AMDGPUCallLowering::lowerCall(MachineIRBuilder &MIRBuilder,
1575
1554
Info.IsVarArg );
1576
1555
IncomingValueAssigner Assigner (RetAssignFn);
1577
1556
CallReturnHandler Handler (MIRBuilder, MRI, MIB);
1578
- if (!determineAndHandleAssignmentsLocal (Handler, Assigner, InArgs,
1579
- MIRBuilder, Info.CallConv ,
1580
- Info.IsVarArg ))
1557
+
1558
+ SmallVector<CCValAssign, 16 > ArgLocs;
1559
+ CCState CCInfo (Info.CallConv , Info.IsVarArg , MF, ArgLocs, F.getContext ());
1560
+
1561
+ const GCNSubtarget &ST = MF.getSubtarget <GCNSubtarget>();
1562
+ if (!ST.enableFlatScratch ()) {
1563
+ SIMachineFunctionInfo *FuncInfo = MF.getInfo <SIMachineFunctionInfo>();
1564
+ CCInfo.AllocateReg (FuncInfo->getScratchRSrcReg ());
1565
+ }
1566
+ if (!determineAndHandleAssignments (Handler, Assigner, InArgs, MIRBuilder,
1567
+ CCInfo, ArgLocs))
1581
1568
return false ;
1582
1569
}
1583
1570
0 commit comments