mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-10 04:33:40 +00:00
[XCore] Make LowerCallResult a static function.
No functionality change. This is r202396 reapplied with no changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202413 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b9e06b97ce
commit
870d997d8c
@ -1078,6 +1078,24 @@ XCoreTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// LowerCallResult - Lower the result values of a call into the
|
||||||
|
/// appropriate copies out of appropriate physical registers / memory locations.
|
||||||
|
static SDValue
|
||||||
|
LowerCallResult(SDValue Chain, SDValue InFlag,
|
||||||
|
const SmallVectorImpl<CCValAssign> &RVLocs,
|
||||||
|
SDLoc dl, SelectionDAG &DAG,
|
||||||
|
SmallVectorImpl<SDValue> &InVals) {
|
||||||
|
// Copy all of the result registers out of their specified physreg.
|
||||||
|
for (unsigned i = 0; i != RVLocs.size(); ++i) {
|
||||||
|
Chain = DAG.getCopyFromReg(Chain, dl, RVLocs[i].getLocReg(),
|
||||||
|
RVLocs[i].getValVT(), InFlag).getValue(1);
|
||||||
|
InFlag = Chain.getValue(2);
|
||||||
|
InVals.push_back(Chain.getValue(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Chain;
|
||||||
|
}
|
||||||
|
|
||||||
/// LowerCCCCallTo - functions arguments are copied from virtual
|
/// LowerCCCCallTo - functions arguments are copied from virtual
|
||||||
/// regs to (physical regs)/(stack frame), CALLSEQ_START and
|
/// regs to (physical regs)/(stack frame), CALLSEQ_START and
|
||||||
/// CALLSEQ_END are emitted.
|
/// CALLSEQ_END are emitted.
|
||||||
@ -1200,37 +1218,15 @@ XCoreTargetLowering::LowerCCCCallTo(SDValue Chain, SDValue Callee,
|
|||||||
InFlag, dl);
|
InFlag, dl);
|
||||||
InFlag = Chain.getValue(1);
|
InFlag = Chain.getValue(1);
|
||||||
|
|
||||||
// Handle result values, copying them out of physregs into vregs that we
|
|
||||||
// return.
|
|
||||||
return LowerCallResult(Chain, InFlag, CallConv, isVarArg,
|
|
||||||
Ins, dl, DAG, InVals);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// LowerCallResult - Lower the result values of a call into the
|
|
||||||
/// appropriate copies out of appropriate physical registers.
|
|
||||||
SDValue
|
|
||||||
XCoreTargetLowering::LowerCallResult(SDValue Chain, SDValue InFlag,
|
|
||||||
CallingConv::ID CallConv, bool isVarArg,
|
|
||||||
const SmallVectorImpl<ISD::InputArg> &Ins,
|
|
||||||
SDLoc dl, SelectionDAG &DAG,
|
|
||||||
SmallVectorImpl<SDValue> &InVals) const {
|
|
||||||
|
|
||||||
// Assign locations to each value returned by this call.
|
// Assign locations to each value returned by this call.
|
||||||
SmallVector<CCValAssign, 16> RVLocs;
|
SmallVector<CCValAssign, 16> RVLocs;
|
||||||
CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
|
CCState RetCCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
|
||||||
getTargetMachine(), RVLocs, *DAG.getContext());
|
getTargetMachine(), RVLocs, *DAG.getContext());
|
||||||
|
RetCCInfo.AnalyzeCallResult(Ins, RetCC_XCore);
|
||||||
|
|
||||||
CCInfo.AnalyzeCallResult(Ins, RetCC_XCore);
|
// Handle result values, copying them out of physregs into vregs that we
|
||||||
|
// return.
|
||||||
// Copy all of the result registers out of their specified physreg.
|
return LowerCallResult(Chain, InFlag, RVLocs, dl, DAG, InVals);
|
||||||
for (unsigned i = 0; i != RVLocs.size(); ++i) {
|
|
||||||
Chain = DAG.getCopyFromReg(Chain, dl, RVLocs[i].getLocReg(),
|
|
||||||
RVLocs[i].getValVT(), InFlag).getValue(1);
|
|
||||||
InFlag = Chain.getValue(2);
|
|
||||||
InVals.push_back(Chain.getValue(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
return Chain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
@ -139,11 +139,6 @@ namespace llvm {
|
|||||||
const SmallVectorImpl<ISD::InputArg> &Ins,
|
const SmallVectorImpl<ISD::InputArg> &Ins,
|
||||||
SDLoc dl, SelectionDAG &DAG,
|
SDLoc dl, SelectionDAG &DAG,
|
||||||
SmallVectorImpl<SDValue> &InVals) const;
|
SmallVectorImpl<SDValue> &InVals) const;
|
||||||
SDValue LowerCallResult(SDValue Chain, SDValue InFlag,
|
|
||||||
CallingConv::ID CallConv, bool isVarArg,
|
|
||||||
const SmallVectorImpl<ISD::InputArg> &Ins,
|
|
||||||
SDLoc dl, SelectionDAG &DAG,
|
|
||||||
SmallVectorImpl<SDValue> &InVals) const;
|
|
||||||
SDValue getReturnAddressFrameIndex(SelectionDAG &DAG) const;
|
SDValue getReturnAddressFrameIndex(SelectionDAG &DAG) const;
|
||||||
SDValue getGlobalAddressWrapper(SDValue GA, const GlobalValue *GV,
|
SDValue getGlobalAddressWrapper(SDValue GA, const GlobalValue *GV,
|
||||||
SelectionDAG &DAG) const;
|
SelectionDAG &DAG) const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user