[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcInternals.h

Chris Lattner lattner at cs.uiuc.edu
Sat Dec 28 14:22:04 PST 2002


Changes in directory llvm/lib/Target/Sparc:

SparcInternals.h updated: 1.73 -> 1.74

---
Log message:

* Rename MachineFrameInfo to TargetFrameInfo
* Move some sparc specific code here from Target files



---
Diffs of the changes:

Index: llvm/lib/Target/Sparc/SparcInternals.h
diff -u llvm/lib/Target/Sparc/SparcInternals.h:1.73 llvm/lib/Target/Sparc/SparcInternals.h:1.74
--- llvm/lib/Target/Sparc/SparcInternals.h:1.73	Tue Oct 29 16:01:44 2002
+++ llvm/lib/Target/Sparc/SparcInternals.h	Sat Dec 28 14:20:24 2002
@@ -528,9 +528,11 @@
 //   a multiple of getStackFrameSizeAlignment().
 //---------------------------------------------------------------------------
 
-class UltraSparcFrameInfo: public MachineFrameInfo {
+class UltraSparcFrameInfo: public TargetFrameInfo {
+  const TargetMachine ⌖
 public:
-  UltraSparcFrameInfo(const TargetMachine &tgt) : MachineFrameInfo(tgt) {}
+  UltraSparcFrameInfo(const TargetMachine &TM)
+    : TargetFrameInfo(StackGrowsDown, StackFrameSizeAlignment, 0), target(TM) {}
   
 public:
   // These methods provide constant parameters of the frame layout.
@@ -603,6 +605,28 @@
   virtual int getDynamicAreaBaseRegNum()               const {
     return (int) target.getRegInfo().getStackPointer();
   }
+
+  virtual int getIncomingArgOffset(MachineFunction& mcInfo,
+				   unsigned argNum) const {
+    assert(argsOnStackHaveFixedSize()); 
+  
+    unsigned relativeOffset = argNum * getSizeOfEachArgOnStack();
+    bool growUp;                          // do args grow up or down
+    int firstArg = getFirstIncomingArgOffset(mcInfo, growUp);
+    return growUp ? firstArg + relativeOffset : firstArg - relativeOffset; 
+  }
+
+  virtual int getOutgoingArgOffset(MachineFunction& mcInfo,
+				   unsigned argNum) const {
+    assert(argsOnStackHaveFixedSize()); 
+    //assert(((int) argNum - this->getNumFixedOutgoingArgs())
+    //     <= (int) mcInfo.getInfo()->getMaxOptionalNumArgs());
+    
+    unsigned relativeOffset = argNum * getSizeOfEachArgOnStack();
+    bool growUp;                          // do args grow up or down
+    int firstArg = getFirstOutgoingArgOffset(mcInfo, growUp);
+    return growUp ? firstArg + relativeOffset : firstArg - relativeOffset; 
+  }
   
 private:
   /*----------------------------------------------------------------------
@@ -612,7 +636,7 @@
     by us.  The rest conform to the Sparc V9 ABI.
     All stack addresses are offset by OFFSET = 0x7ff (2047).
 
-    Alignment assumpteions and other invariants:
+    Alignment assumptions and other invariants:
     (1) %sp+OFFSET and %fp+OFFSET are always aligned on 16-byte boundary
     (2) Variables in automatic, spill, temporary, or dynamic regions
         are aligned according to their size as in all memory accesses.
@@ -714,7 +738,7 @@
   virtual const MachineInstrInfo &getInstrInfo() const { return instrInfo; }
   virtual const MachineSchedInfo &getSchedInfo() const { return schedInfo; }
   virtual const MachineRegInfo   &getRegInfo()   const { return regInfo; }
-  virtual const MachineFrameInfo &getFrameInfo() const { return frameInfo; }
+  virtual const TargetFrameInfo  &getFrameInfo() const { return frameInfo; }
   virtual const MachineCacheInfo &getCacheInfo() const { return cacheInfo; }
   virtual const MachineOptInfo   &getOptInfo()   const { return optInfo; }
 





More information about the llvm-commits mailing list