Added functions to compute which register, if any, to use
for a particular argument in a list of arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2315 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/SparcV9Internals.h b/lib/Target/SparcV9/SparcV9Internals.h
index 52118f9..12c86b8 100644
--- a/lib/Target/SparcV9/SparcV9Internals.h
+++ b/lib/Target/SparcV9/SparcV9Internals.h
@@ -284,11 +284,16 @@
                          PhyRegAlloc &PRA) const;
 
 
-  // To find whether a particular call is to a var arg method
-  //
-  bool isVarArgCall(const MachineInstr *CallMI) const;
+  // Compute which register can be used for an argument, if any
+  // 
+  int regNumForIntArg(bool inCallee, bool isVarArgsCall,
+                      unsigned argNo, unsigned intArgNo, unsigned fpArgNo,
+                      unsigned& regClassId) const;
 
-
+  int regNumForFPArg(unsigned RegType, bool inCallee, bool isVarArgsCall,
+                     unsigned argNo, unsigned intArgNo, unsigned fpArgNo,
+                     unsigned& regClassId) const;
+  
 public:
   UltraSparcRegInfo(const UltraSparc &tgt);
 
@@ -429,7 +434,7 @@
   //
   MachineInstr * cpReg2RegMI(unsigned SrcReg, unsigned DestReg,
 			     int RegType) const;
-
+  
   MachineInstr * cpReg2MemMI(unsigned SrcReg, unsigned DestPtrReg,
 			     int Offset, int RegType) const;
 
@@ -506,32 +511,32 @@
   // MachineCodeInfoForMethod object for the given method.
   // 
   int getFirstIncomingArgOffset  (MachineCodeForMethod& mcInfo,
-                                  bool& pos) const
+                                  bool& growUp) const
   {
-    pos = true;                         // arguments area grows upwards
+    growUp = true;                         // arguments area grows upwards
     return FirstIncomingArgOffsetFromFP;
   }
   int getFirstOutgoingArgOffset  (MachineCodeForMethod& mcInfo,
-                                  bool& pos) const
+                                  bool& growUp) const
   {
-    pos = true;                         // arguments area grows upwards
+    growUp = true;                         // arguments area grows upwards
     return FirstOutgoingArgOffsetFromSP;
   }
   int getFirstOptionalOutgoingArgOffset(MachineCodeForMethod& mcInfo,
-                                        bool& pos)const
+                                        bool& growUp)const
   {
-    pos = true;                         // arguments area grows upwards
+    growUp = true;                         // arguments area grows upwards
     return FirstOptionalOutgoingArgOffsetFromSP;
   }
   
   int getFirstAutomaticVarOffset (MachineCodeForMethod& mcInfo,
-                                  bool& pos) const;
+                                  bool& growUp) const;
   int getRegSpillAreaOffset      (MachineCodeForMethod& mcInfo,
-                                  bool& pos) const;
+                                  bool& growUp) const;
   int getTmpAreaOffset           (MachineCodeForMethod& mcInfo,
-                                  bool& pos) const;
+                                  bool& growUp) const;
   int getDynamicAreaOffset       (MachineCodeForMethod& mcInfo,
-                                  bool& pos) const;
+                                  bool& growUp) const;
 
   //
   // These methods specify the base register used for each stack area