diff --git a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp index df458689733a..19762ee5cfb0 100644 --- a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp +++ b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp @@ -222,7 +222,6 @@ BitVector ARMBaseRegisterInfo::getReservedRegs(const MachineFunction &MF) const BitVector Reserved(getNumRegs()); Reserved.set(ARM::SP); Reserved.set(ARM::PC); - // FP is reserved on Darwin even if we're not using it in this function. if (STI.isTargetDarwin() || hasFP(MF)) Reserved.set(FramePtr); // Some targets reserve R9. @@ -240,7 +239,6 @@ bool ARMBaseRegisterInfo::isReservedReg(const MachineFunction &MF, return true; case ARM::R7: case ARM::R11: - // FP is reserved on Darwin even if we're not using it in this function. if (FramePtr == Reg && (STI.isTargetDarwin() || hasFP(MF))) return true; break; @@ -494,8 +492,7 @@ static unsigned calculateMaxStackAlignment(const MachineFrameInfo *FFI) { /// bool ARMBaseRegisterInfo::hasFP(const MachineFunction &MF) const { const MachineFrameInfo *MFI = MF.getFrameInfo(); - return ((STI.isTargetDarwin() && MFI->hasCalls()) || - NoFramePointerElim || + return (NoFramePointerElim || needsStackRealignment(MF) || MFI->hasVarSizedObjects() || MFI->isFrameAddressTaken()); diff --git a/llvm/test/CodeGen/ARM/hello.ll b/llvm/test/CodeGen/ARM/hello.ll index 23935b96efd7..ccdc7bf4c140 100644 --- a/llvm/test/CodeGen/ARM/hello.ll +++ b/llvm/test/CodeGen/ARM/hello.ll @@ -2,7 +2,7 @@ ; RUN: llc < %s -mtriple=arm-linux-gnueabi | grep mov | count 1 ; RUN: llc < %s -mtriple=arm-linux-gnu --disable-fp-elim | \ ; RUN: grep mov | count 3 -; RUN: llc < %s -mtriple=arm-apple-darwin | grep mov | count 3 +; RUN: llc < %s -mtriple=arm-apple-darwin | grep mov | count 2 @str = internal constant [12 x i8] c"Hello World\00" diff --git a/llvm/test/CodeGen/ARM/ifcvt5.ll b/llvm/test/CodeGen/ARM/ifcvt5.ll index f6084b847950..623f2cb1dfab 100644 --- a/llvm/test/CodeGen/ARM/ifcvt5.ll +++ b/llvm/test/CodeGen/ARM/ifcvt5.ll @@ -1,7 +1,5 @@ ; RUN: llc < %s -mtriple=armv7-apple-darwin | FileCheck %s -; XFAIL: * - @x = external global i32* ; [#uses=1] define void @foo(i32 %a) { diff --git a/llvm/test/CodeGen/ARM/insn-sched1.ll b/llvm/test/CodeGen/ARM/insn-sched1.ll index 717b89cccb5f..59f0d538d47c 100644 --- a/llvm/test/CodeGen/ARM/insn-sched1.ll +++ b/llvm/test/CodeGen/ARM/insn-sched1.ll @@ -1,6 +1,6 @@ ; RUN: llc < %s -march=arm -mattr=+v6 ; RUN: llc < %s -mtriple=arm-apple-darwin -mattr=+v6 |\ -; RUN: grep mov | count 4 +; RUN: grep mov | count 3 define i32 @test(i32 %x) { %tmp = trunc i32 %x to i16 ; [#uses=1] diff --git a/llvm/test/CodeGen/Thumb2/thumb2-ifcvt1.ll b/llvm/test/CodeGen/Thumb2/thumb2-ifcvt1.ll index 617d0b188296..71199abc5728 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-ifcvt1.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-ifcvt1.ll @@ -1,5 +1,4 @@ ; RUN: llc < %s -mtriple=thumbv7-apple-darwin | FileCheck %s -; XFAIL: * define i32 @t1(i32 %a, i32 %b, i32 %c, i32 %d) { ; CHECK: t1: diff --git a/llvm/test/CodeGen/Thumb2/thumb2-ifcvt2.ll b/llvm/test/CodeGen/Thumb2/thumb2-ifcvt2.ll index 5ff9bfd1de83..d917ffe56bbc 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-ifcvt2.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-ifcvt2.ll @@ -1,5 +1,4 @@ ; RUN: llc < %s -mtriple=thumbv7-apple-darwin | FileCheck %s -; XFAIL: * define void @foo(i32 %X, i32 %Y) { entry: