[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineFrameInfo.h

Nate Begeman natebegeman at mac.com
Sun Nov 6 01:01:06 PST 2005



Changes in directory llvm/include/llvm/CodeGen:

MachineFrameInfo.h updated: 1.12 -> 1.13
---
Log message:

Add the necessary support to the ISel to allow targets to codegen the new
alignment information appropriately.  Includes code for PowerPC to support
fixed-size allocas with alignment larger than the stack.  Support for
arbitrarily aligned dynamic allocas coming soon.


---
Diffs of the changes:  (+18 -1)

 MachineFrameInfo.h |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/CodeGen/MachineFrameInfo.h
diff -u llvm/include/llvm/CodeGen/MachineFrameInfo.h:1.12 llvm/include/llvm/CodeGen/MachineFrameInfo.h:1.13
--- llvm/include/llvm/CodeGen/MachineFrameInfo.h:1.12	Thu Apr 21 15:38:00 2005
+++ llvm/include/llvm/CodeGen/MachineFrameInfo.h	Sun Nov  6 03:00:37 2005
@@ -85,6 +85,13 @@
   /// to be allocated on entry to the function.
   ///
   unsigned StackSize;
+  
+  /// MaxAlignment - The prolog/epilog code inserter may process objects 
+  /// that require greater alignment than the default alignment the target
+  /// provides. In these cases, MaxAlignment is set to the new alignment 
+  /// necessary to easily calculate fixed offsets for each stack object.
+  ///
+  unsigned MaxAlignment;
 
   /// HasCalls - Set to true if this function has any function calls.  This is
   /// only valid during and after prolog/epilog code insertion.
@@ -99,7 +106,7 @@
   unsigned MaxCallFrameSize;
 public:
   MachineFrameInfo() {
-    NumFixedObjects = StackSize = 0;
+    NumFixedObjects = StackSize = MaxAlignment = 0;
     HasVarSizedObjects = false;
     HasCalls = false;
     MaxCallFrameSize = 0;
@@ -163,6 +170,16 @@
   ///
   void setStackSize(unsigned Size) { StackSize = Size; }
 
+  /// getMaxAlignment - Return the alignment in bytes that this function must be 
+  /// aligned to, which is greater than the default stack alignment provided by 
+  /// the target.
+  ///
+  unsigned getMaxAlignment() const { return MaxAlignment; }
+  
+  /// setMaxAlignment - Set the preferred alignment.
+  ///
+  void setMaxAlignment(unsigned Align) { MaxAlignment = Align; }
+  
   /// hasCalls - Return true if the current function has no function calls.
   /// This is only valid during or after prolog/epilog code emission.
   ///






More information about the llvm-commits mailing list