summaryrefslogtreecommitdiff
path: root/lib/Target/Mips
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@mips.com>2012-10-30 19:37:25 +0000
committerAkira Hatanaka <ahatanaka@mips.com>2012-10-30 19:37:25 +0000
commitb33b34a7dc447cf52702b8892c9829344e81f73a (patch)
tree92ab3dcbf915c905c1cd01498c341e385cfa737e /lib/Target/Mips
parent202d1cb8a587a9513d8bb65bf4a3d88a55132860 (diff)
downloadllvm-b33b34a7dc447cf52702b8892c9829344e81f73a.tar.gz
llvm-b33b34a7dc447cf52702b8892c9829344e81f73a.tar.bz2
llvm-b33b34a7dc447cf52702b8892c9829344e81f73a.tar.xz
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
Diffstat (limited to 'lib/Target/Mips')
-rw-r--r--lib/Target/Mips/MipsISelLowering.cpp2
-rw-r--r--lib/Target/Mips/MipsMachineFunction.h11
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/Target/Mips/MipsISelLowering.cpp b/lib/Target/Mips/MipsISelLowering.cpp
index 77f1bac877..862790b4d2 100644
--- a/lib/Target/Mips/MipsISelLowering.cpp
+++ b/lib/Target/Mips/MipsISelLowering.cpp
@@ -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();
diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h
index f9efe07e0e..663aaecf5c 100644
--- a/lib/Target/Mips/MipsMachineFunction.h
+++ b/lib/Target/Mips/MipsMachineFunction.h
@@ -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; }
};