From 771138ca915591d804f731e1e0e189cf0a2a6803 Mon Sep 17 00:00:00 2001 From: Scott Michel Date: Sat, 8 Nov 2008 05:16:20 +0000 Subject: [PATCH] CellSPU: Fix prologue/epilogue emission when function contains calls but theframe size is 0; the prologue and epilogue should be emitted in this case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58890 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/CellSPU/SPURegisterInfo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Target/CellSPU/SPURegisterInfo.cpp b/lib/Target/CellSPU/SPURegisterInfo.cpp index eff6d6a36cd..beea0dfb02c 100644 --- a/lib/Target/CellSPU/SPURegisterInfo.cpp +++ b/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