[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