mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 00:39:36 +00:00
Fixed more problems caused by 78142.
Passing of indirect arguments starts after return value on the callee's frame. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78635 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3a5f0d444c
commit
a418628d30
@ -404,6 +404,7 @@ PIC16TargetLowering::MakePIC16Libcall(PIC16ISD::PIC16Libcall Call,
|
||||
Entry.isZExt = !isSigned;
|
||||
Args.push_back(Entry);
|
||||
}
|
||||
|
||||
SDValue Callee = DAG.getExternalSymbol(getPIC16LibcallName(Call), EVT::i16);
|
||||
|
||||
const Type *RetTy = RetVT.getTypeForEVT();
|
||||
@ -1086,6 +1087,7 @@ SDValue PIC16TargetLowering::
|
||||
LowerIndirectCallArguments(SDValue Chain, SDValue InFlag,
|
||||
SDValue DataAddr_Lo, SDValue DataAddr_Hi,
|
||||
const SmallVectorImpl<ISD::OutputArg> &Outs,
|
||||
const SmallVectorImpl<ISD::InputArg> &Ins,
|
||||
DebugLoc dl, SelectionDAG &DAG) {
|
||||
unsigned NumOps = Outs.size();
|
||||
|
||||
@ -1098,7 +1100,7 @@ LowerIndirectCallArguments(SDValue Chain, SDValue InFlag,
|
||||
SDValue Arg, StoreRet;
|
||||
|
||||
// For PIC16 ABI the arguments come after the return value.
|
||||
unsigned RetVals = Outs.size();
|
||||
unsigned RetVals = Ins.size();
|
||||
for (unsigned i = 0, ArgOffset = RetVals; i < NumOps; i++) {
|
||||
// Get the arguments
|
||||
Arg = Outs[i].Val;
|
||||
@ -1430,7 +1432,7 @@ PIC16TargetLowering::LowerCall(SDValue Chain, SDValue Callee,
|
||||
OperFlag = getOutFlag(CallArgs);
|
||||
} else {
|
||||
CallArgs = LowerIndirectCallArguments(Chain, OperFlag, DataAddr_Lo,
|
||||
DataAddr_Hi, Outs, dl, DAG);
|
||||
DataAddr_Hi, Outs, Ins, dl, DAG);
|
||||
Chain = getChain(CallArgs);
|
||||
OperFlag = getOutFlag(CallArgs);
|
||||
}
|
||||
|
@ -111,6 +111,7 @@ namespace llvm {
|
||||
LowerIndirectCallArguments(SDValue Chain, SDValue InFlag,
|
||||
SDValue DataAddr_Lo, SDValue DataAddr_Hi,
|
||||
const SmallVectorImpl<ISD::OutputArg> &Outs,
|
||||
const SmallVectorImpl<ISD::InputArg> &Ins,
|
||||
DebugLoc dl, SelectionDAG &DAG);
|
||||
|
||||
SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG);
|
||||
|
Loading…
x
Reference in New Issue
Block a user