Propagate alloca alignment information via variable size object frame
authorEric Christopher <echristo@apple.com>
Sat, 17 Jul 2010 00:28:22 +0000 (00:28 +0000)
committerEric Christopher <echristo@apple.com>
Sat, 17 Jul 2010 00:28:22 +0000 (00:28 +0000)
information.

No functional change yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108583 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineFrameInfo.h
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

index 9471316d25d7202ebc432067c7e43fda8cbb4cb5..86fb23787b6a5a6d1559349f038200e2d7078a27 100644 (file)
@@ -417,9 +417,10 @@ public:
   /// variable sized object is created, whether or not the index returned is
   /// actually used.
   ///
-  int CreateVariableSizedObject() {
+  int CreateVariableSizedObject(unsigned Alignment) {
     HasVarSizedObjects = true;
-    Objects.push_back(StackObject(0, 1, 0, false, false));
+    Objects.push_back(StackObject(0, Alignment, 0, false, false));
+    MaxAlignment = std::max(MaxAlignment, Alignment);
     return (int)Objects.size()-NumFixedObjects-1;
   }
 
index 4a0004a86c83575c9100faf294b9a68ac647e697..723e0f0a91483e3c873efd8b6ea53a73342dbbd5 100644 (file)
@@ -2848,7 +2848,7 @@ void SelectionDAGBuilder::visitAlloca(const AllocaInst &I) {
 
   // Inform the Frame Information that we have just allocated a variable-sized
   // object.
-  FuncInfo.MF->getFrameInfo()->CreateVariableSizedObject();
+  FuncInfo.MF->getFrameInfo()->CreateVariableSizedObject(Align ? Align : 1);
 }
 
 void SelectionDAGBuilder::visitLoad(const LoadInst &I) {