[llvm-commits] CVS: llvm/lib/CodeGen/PrologEpilogInserter.cpp

Evan Cheng evan.cheng at apple.com
Thu Sep 28 11:52:48 PDT 2006



Changes in directory llvm/lib/CodeGen:

PrologEpilogInserter.cpp updated: 1.60 -> 1.61
---
Log message:

TargetRegisterClass specifies the desired spill alignment. However, it cannot be honored if stack alignment is smaller.

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

 PrologEpilogInserter.cpp |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletion(-)


Index: llvm/lib/CodeGen/PrologEpilogInserter.cpp
diff -u llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.60 llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.61
--- llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.60	Wed Sep 27 19:10:27 2006
+++ llvm/lib/CodeGen/PrologEpilogInserter.cpp	Thu Sep 28 13:52:32 2006
@@ -190,7 +190,12 @@
     int FrameIdx;
     if (FixedSlot == FixedSpillSlots+NumFixedSpillSlots) {
       // Nope, just spill it anywhere convenient.
-      FrameIdx = FFI->CreateStackObject(RC->getSize(), RC->getAlignment());
+      unsigned Align = RC->getAlignment();
+      unsigned StackAlign = TFI->getStackAlignment();
+      // We may not be able to sastify the desired alignment specification of
+      // the TargetRegisterClass if the stack alignment is smaller. Use the min.
+      Align = std::min(Align, StackAlign);
+      FrameIdx = FFI->CreateStackObject(RC->getSize(), Align);
       if ((unsigned)FrameIdx < MinCSFrameIndex) MinCSFrameIndex = FrameIdx;
       if ((unsigned)FrameIdx > MaxCSFrameIndex) MaxCSFrameIndex = FrameIdx;
     } else {






More information about the llvm-commits mailing list