mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +00:00
minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48448 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d183307639
commit
e0b1215a92
@ -227,11 +227,10 @@ LowerJumpTable(SDOperand Op, SelectionDAG &DAG)
|
|||||||
SDOperand MipsTargetLowering::
|
SDOperand MipsTargetLowering::
|
||||||
LowerCALL(SDOperand Op, SelectionDAG &DAG)
|
LowerCALL(SDOperand Op, SelectionDAG &DAG)
|
||||||
{
|
{
|
||||||
unsigned CallingConv= cast<ConstantSDNode>(Op.getOperand(1))->getValue();
|
unsigned CallingConv = cast<ConstantSDNode>(Op.getOperand(1))->getValue();
|
||||||
|
|
||||||
// By now, only CallingConv::C implemented
|
// By now, only CallingConv::C implemented
|
||||||
switch (CallingConv)
|
switch (CallingConv) {
|
||||||
{
|
|
||||||
default:
|
default:
|
||||||
assert(0 && "Unsupported calling convention");
|
assert(0 && "Unsupported calling convention");
|
||||||
case CallingConv::Fast:
|
case CallingConv::Fast:
|
||||||
@ -248,7 +247,6 @@ SDOperand MipsTargetLowering::
|
|||||||
LowerCCCCallTo(SDOperand Op, SelectionDAG &DAG, unsigned CC)
|
LowerCCCCallTo(SDOperand Op, SelectionDAG &DAG, unsigned CC)
|
||||||
{
|
{
|
||||||
MachineFunction &MF = DAG.getMachineFunction();
|
MachineFunction &MF = DAG.getMachineFunction();
|
||||||
unsigned StackReg = MF.getTarget().getRegisterInfo()->getFrameRegister(MF);
|
|
||||||
|
|
||||||
SDOperand Chain = Op.getOperand(0);
|
SDOperand Chain = Op.getOperand(0);
|
||||||
SDOperand Callee = Op.getOperand(4);
|
SDOperand Callee = Op.getOperand(4);
|
||||||
@ -275,8 +273,7 @@ LowerCCCCallTo(SDOperand Op, SelectionDAG &DAG, unsigned CC)
|
|||||||
SmallVector<std::pair<unsigned, SDOperand>, 8> RegsToPass;
|
SmallVector<std::pair<unsigned, SDOperand>, 8> RegsToPass;
|
||||||
SmallVector<SDOperand, 8> MemOpChains;
|
SmallVector<SDOperand, 8> MemOpChains;
|
||||||
|
|
||||||
SDOperand StackPtr;
|
int LastStackLoc = 0;
|
||||||
int LastStackLoc=0;
|
|
||||||
|
|
||||||
// Walk the register/memloc assignments, inserting copies/loads.
|
// Walk the register/memloc assignments, inserting copies/loads.
|
||||||
for (unsigned i = 0, e = ArgLocs.size(); i != e; ++i) {
|
for (unsigned i = 0, e = ArgLocs.size(); i != e; ++i) {
|
||||||
@ -287,43 +284,40 @@ LowerCCCCallTo(SDOperand Op, SelectionDAG &DAG, unsigned CC)
|
|||||||
|
|
||||||
// Promote the value if needed.
|
// Promote the value if needed.
|
||||||
switch (VA.getLocInfo()) {
|
switch (VA.getLocInfo()) {
|
||||||
default: assert(0 && "Unknown loc info!");
|
default: assert(0 && "Unknown loc info!");
|
||||||
case CCValAssign::Full: break;
|
case CCValAssign::Full: break;
|
||||||
case CCValAssign::SExt:
|
case CCValAssign::SExt:
|
||||||
Arg = DAG.getNode(ISD::SIGN_EXTEND, VA.getLocVT(), Arg);
|
Arg = DAG.getNode(ISD::SIGN_EXTEND, VA.getLocVT(), Arg);
|
||||||
break;
|
break;
|
||||||
case CCValAssign::ZExt:
|
case CCValAssign::ZExt:
|
||||||
Arg = DAG.getNode(ISD::ZERO_EXTEND, VA.getLocVT(), Arg);
|
Arg = DAG.getNode(ISD::ZERO_EXTEND, VA.getLocVT(), Arg);
|
||||||
break;
|
break;
|
||||||
case CCValAssign::AExt:
|
case CCValAssign::AExt:
|
||||||
Arg = DAG.getNode(ISD::ANY_EXTEND, VA.getLocVT(), Arg);
|
Arg = DAG.getNode(ISD::ANY_EXTEND, VA.getLocVT(), Arg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Arguments that can be passed on register must be kept at
|
// Arguments that can be passed on register must be kept at
|
||||||
// RegsToPass vector
|
// RegsToPass vector
|
||||||
if (VA.isRegLoc()) {
|
if (VA.isRegLoc()) {
|
||||||
RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
|
RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
|
||||||
} else {
|
continue;
|
||||||
|
|
||||||
assert(VA.isMemLoc());
|
|
||||||
|
|
||||||
if (StackPtr.Val == 0)
|
|
||||||
StackPtr = DAG.getRegister(StackReg, getPointerTy());
|
|
||||||
|
|
||||||
// Create the frame index object for this incoming parameter
|
|
||||||
// This guarantees that when allocating Local Area the firsts
|
|
||||||
// 16 bytes which are alwayes reserved won't be overwritten.
|
|
||||||
LastStackLoc = (16 + VA.getLocMemOffset());
|
|
||||||
int FI = MFI->CreateFixedObject(MVT::getSizeInBits(VA.getValVT())/8,
|
|
||||||
LastStackLoc);
|
|
||||||
|
|
||||||
SDOperand PtrOff = DAG.getFrameIndex(FI,getPointerTy());
|
|
||||||
|
|
||||||
// emit ISD::STORE whichs stores the
|
|
||||||
// parameter value to a stack Location
|
|
||||||
MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(VA.isMemLoc());
|
||||||
|
|
||||||
|
// Create the frame index object for this incoming parameter
|
||||||
|
// This guarantees that when allocating Local Area the firsts
|
||||||
|
// 16 bytes which are alwayes reserved won't be overwritten.
|
||||||
|
LastStackLoc = (16 + VA.getLocMemOffset());
|
||||||
|
int FI = MFI->CreateFixedObject(MVT::getSizeInBits(VA.getValVT())/8,
|
||||||
|
LastStackLoc);
|
||||||
|
|
||||||
|
SDOperand PtrOff = DAG.getFrameIndex(FI,getPointerTy());
|
||||||
|
|
||||||
|
// emit ISD::STORE whichs stores the
|
||||||
|
// parameter value to a stack Location
|
||||||
|
MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Transform all store nodes into one single node because
|
// Transform all store nodes into one single node because
|
||||||
|
Loading…
x
Reference in New Issue
Block a user