diff options
Diffstat (limited to 'lib/Target/PowerPC/PPCRegisterInfo.cpp')
-rw-r--r-- | lib/Target/PowerPC/PPCRegisterInfo.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/Target/PowerPC/PPCRegisterInfo.cpp b/lib/Target/PowerPC/PPCRegisterInfo.cpp index 0e6bc69023..cc3b583cc2 100644 --- a/lib/Target/PowerPC/PPCRegisterInfo.cpp +++ b/lib/Target/PowerPC/PPCRegisterInfo.cpp @@ -20,6 +20,7 @@ #include "PPCFrameInfo.h" #include "PPCSubtarget.h" #include "llvm/Constants.h" +#include "llvm/Function.h" #include "llvm/Type.h" #include "llvm/CodeGen/ValueTypes.h" #include "llvm/CodeGen/MachineInstrBuilder.h" @@ -946,6 +947,8 @@ PPCRegisterInfo::emitPrologue(MachineFunction &MF) const { MachineBasicBlock::iterator MBBI = MBB.begin(); MachineFrameInfo *MFI = MF.getFrameInfo(); MachineModuleInfo *MMI = MFI->getMachineModuleInfo(); + bool needsFrameInfo = (MMI && MMI->hasDebugInfo()) || + ExceptionHandling || !MF.getFunction()->doesNotThrow(); // Prepare for frame info. unsigned FrameLabelId = 0; @@ -1019,7 +1022,7 @@ PPCRegisterInfo::emitPrologue(MachineFunction &MF) const { unsigned TargetAlign = MF.getTarget().getFrameInfo()->getStackAlignment(); unsigned MaxAlign = MFI->getMaxAlignment(); - if (MMI && MMI->needsFrameInfo()) { + if (needsFrameInfo) { // Mark effective beginning of when frame pointer becomes valid. FrameLabelId = MMI->NextLabelID(); BuildMI(MBB, MBBI, TII.get(PPC::LABEL)).addImm(FrameLabelId).addImm(0); @@ -1095,7 +1098,7 @@ PPCRegisterInfo::emitPrologue(MachineFunction &MF) const { } } - if (MMI && MMI->needsFrameInfo()) { + if (needsFrameInfo) { std::vector<MachineMove> &Moves = MMI->getFrameMoves(); if (NegFrameSize) { |