summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/CellSPU
diff options
context:
space:
mode:
authorScott Michel <scottm@aero.org>2008-11-08 05:16:20 +0000
committerScott Michel <scottm@aero.org>2008-11-08 05:16:20 +0000
commit1ccbbc3d0725909b29b7e590a0a2d318e4684516 (patch)
treeb586b02a13531de80562c28d21c750c13da82ad6 /llvm/lib/Target/CellSPU
parent8ec8048f937600c65ef21f8aa9e32e327e99dd54 (diff)
downloadbcm5719-llvm-1ccbbc3d0725909b29b7e590a0a2d318e4684516.tar.gz
bcm5719-llvm-1ccbbc3d0725909b29b7e590a0a2d318e4684516.zip
CellSPU: Fix prologue/epilogue emission when function contains calls but
theframe size is 0; the prologue and epilogue should be emitted in this case. llvm-svn: 58890
Diffstat (limited to 'llvm/lib/Target/CellSPU')
-rw-r--r--llvm/lib/Target/CellSPU/SPURegisterInfo.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp b/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp
index eff6d6a36cd..beea0dfb02c 100644
--- a/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp
+++ b/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp
@@ -438,7 +438,7 @@ void SPURegisterInfo::emitPrologue(MachineFunction &MF) const
assert((FrameSize & 0xf) == 0
&& "SPURegisterInfo::emitPrologue: FrameSize not aligned");
- if (FrameSize > 0) {
+ if (FrameSize > 0 || MFI->hasCalls()) {
FrameSize = -(FrameSize + SPUFrameInfo::minStackSize());
if (hasDebugInfo) {
// Mark effective beginning of when frame pointer becomes valid.
@@ -534,7 +534,7 @@ SPURegisterInfo::emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const
"Can only insert epilog into returning blocks");
assert((FrameSize & 0xf) == 0
&& "SPURegisterInfo::emitEpilogue: FrameSize not aligned");
- if (FrameSize > 0) {
+ if (FrameSize > 0 || MFI->hasCalls()) {
FrameSize = FrameSize + SPUFrameInfo::minStackSize();
if (isS10Constant(FrameSize + LinkSlotOffset)) {
// Reload $lr, adjust $sp by required amount
OpenPOWER on IntegriCloud