hasFP should return true if frame address is taken.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73893 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2009-06-22 18:38:48 +00:00
parent 08367b6163
commit 8dcbbdd00e
2 changed files with 15 additions and 1 deletions

View File

@ -497,7 +497,9 @@ ARMRegisterInfo::requiresRegisterScavenging(const MachineFunction &MF) const {
/// ///
bool ARMRegisterInfo::hasFP(const MachineFunction &MF) const { bool ARMRegisterInfo::hasFP(const MachineFunction &MF) const {
const MachineFrameInfo *MFI = MF.getFrameInfo(); const MachineFrameInfo *MFI = MF.getFrameInfo();
return NoFramePointerElim || MFI->hasVarSizedObjects(); return (NoFramePointerElim ||
MFI->hasVarSizedObjects() ||
MFI->isFrameAddressTaken());
} }
// hasReservedCallFrame - Under normal circumstances, when a frame pointer is // hasReservedCallFrame - Under normal circumstances, when a frame pointer is

View File

@ -0,0 +1,12 @@
; RUN: llvm-as < %s | llc -mtriple=arm-apple-darwin | grep mov | grep r7
; RUN: llvm-as < %s | llc -mtriple=arm-linux-gnueabi | grep mov | grep r11
; PR4344
; PR4416
define arm_aapcscc i8* @t() nounwind {
entry:
%0 = call i8* @llvm.frameaddress(i32 0)
ret i8* %0
}
declare i8* @llvm.frameaddress(i32) nounwind readnone