Add code for saving formal argument information to MipsFunctionInfo. This

information will be used by IsEligibleForTailCallOptimization to determine
whether a call can be tail-call optimized.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167043 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Akira Hatanaka 2012-10-30 19:37:25 +00:00
parent 202d1cb8a5
commit b33b34a7dc
2 changed files with 13 additions and 0 deletions

View File

@ -3021,6 +3021,8 @@ MipsTargetLowering::LowerFormalArguments(SDValue Chain,
MipsCC MipsCCInfo(CallConv, isVarArg, IsO32, CCInfo);
MipsCCInfo.analyzeFormalArguments(Ins);
MipsFI->setFormalArgInfo(CCInfo.getNextStackOffset(),
MipsCCInfo.hasByValArg());
Function::const_arg_iterator FuncArg =
DAG.getMachineFunction().getFunction()->arg_begin();

View File

@ -47,6 +47,10 @@ class MipsFunctionInfo : public MachineFunctionInfo {
/// VarArgsFrameIndex - FrameIndex for start of varargs area.
int VarArgsFrameIndex;
// Formal argument information obtained during call to LowerFormalArguments.
unsigned NextStackOffset;
bool HasByvalArg;
bool EmitNOAT;
public:
@ -67,6 +71,13 @@ public:
int getVarArgsFrameIndex() const { return VarArgsFrameIndex; }
void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; }
unsigned nextStackOffset() const { return NextStackOffset; }
bool hasByvalArg() const { return HasByvalArg; }
void setFormalArgInfo(unsigned Offset, bool HasByval) {
NextStackOffset = Offset;
HasByvalArg = HasByval;
}
bool getEmitNOAT() const { return EmitNOAT; }
void setEmitNOAT() { EmitNOAT = true; }
};