Add code for saving formal argument information to MipsFunctionInfo. This
authorAkira Hatanaka <ahatanaka@mips.com>
Tue, 30 Oct 2012 19:37:25 +0000 (19:37 +0000)
committerAkira Hatanaka <ahatanaka@mips.com>
Tue, 30 Oct 2012 19:37:25 +0000 (19:37 +0000)
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

lib/Target/Mips/MipsISelLowering.cpp
lib/Target/Mips/MipsMachineFunction.h

index 77f1bac87766335cb43a35e2b2bd25d5e07fc19c..862790b4d2cc017c3fb51fe2c04de87a254fd5fc 100644 (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();
index f9efe07e0ee1ddf9c6e5d88b21df48871599e03d..663aaecf5c06953419ef7c7c6b3f8d1112c2b58b 100644 (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; }
 };