From d77cbe8947f115212f157d5d1e3d93ca6c4c8016 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 26 Sep 2008 19:48:35 +0000 Subject: Fix @llvm.frameaddress codegen. FP elimination optimization should be disabled when frame address is desired. Also add support for depth > 0. llvm-svn: 56683 --- llvm/lib/Target/ARM/ARMRegisterInfo.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Target/ARM/ARMRegisterInfo.cpp') diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp index 7787f43ff61..d598ef68f1d 100644 --- a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp +++ b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp @@ -209,7 +209,9 @@ ARMRegisterInfo::requiresRegisterScavenging(const MachineFunction &MF) const { /// or if frame pointer elimination is disabled. /// bool ARMRegisterInfo::hasFP(const MachineFunction &MF) const { - return NoFramePointerElim || MF.getFrameInfo()->hasVarSizedObjects(); + const MachineFrameInfo *MFI = MF.getFrameInfo(); + return NoFramePointerElim || MFI->hasVarSizedObjects() || + MFI->isFrameAddressTaken(); } // hasReservedCallFrame - Under normal circumstances, when a frame pointer is -- cgit v1.2.3