summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/ARM/ARMRegisterInfo.cpp4
-rw-r--r--llvm/test/CodeGen/ARM/frame_thumb.ll9
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
+}
OpenPOWER on IntegriCloud