[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