diff options
| -rw-r--r-- | llvm/lib/Target/ARM/ARMRegisterInfo.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/frame_thumb.ll | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp index 96c6d385f1b..34c07d723cd 100644 --- a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp +++ b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp @@ -85,7 +85,7 @@ ARMRegisterInfo::ARMRegisterInfo(const TargetInstrInfo &tii, const ARMSubtarget &sti) : ARMGenRegisterInfo(ARM::ADJCALLSTACKDOWN, ARM::ADJCALLSTACKUP), TII(tii), STI(sti), - FramePtr(STI.useThumbBacktraces() ? ARM::R7 : ARM::R11) { + FramePtr(STI.useThumbBacktraces() || STI.isThumb() ? ARM::R7 : ARM::R11) { } bool ARMRegisterInfo::spillCalleeSavedRegisters(MachineBasicBlock &MBB, @@ -1472,7 +1472,7 @@ unsigned ARMRegisterInfo::getRARegister() const { unsigned ARMRegisterInfo::getFrameRegister(MachineFunction &MF) const { if (STI.isTargetDarwin() || hasFP(MF)) - return STI.useThumbBacktraces() ? ARM::R7 : ARM::R11; + return STI.useThumbBacktraces() || STI.isThumb() ? ARM::R7 : ARM::R11; else return ARM::SP; } diff --git a/llvm/test/CodeGen/ARM/frame_thumb.ll b/llvm/test/CodeGen/ARM/frame_thumb.ll new file mode 100644 index 00000000000..fe82db99212 --- /dev/null +++ b/llvm/test/CodeGen/ARM/frame_thumb.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc -march=thumb -mtriple=arm-apple-darwin \ +; RUN: -disable-fp-elim | not grep {r11} +; RUN: llvm-as < %s | llc -march=thumb -mtriple=arm-linux-gnueabi \ +; RUN: -disable-fp-elim | not grep {r11} + +define i32 @f() { +entry: + ret i32 10 +} |

