Thumb1 functions using @llvm.returnaddress were not saving the incoming LR.

Radar 8031193.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bob Wilson 2010-06-22 22:04:24 +00:00
parent 97994e0262
commit a3a204664d
2 changed files with 6 additions and 4 deletions

View File

@ -175,10 +175,10 @@ spillCalleeSavedRegisters(MachineBasicBlock &MBB,
isKill = false;
}
if (isKill) {
if (isKill)
MBB.addLiveIn(Reg);
MIB.addReg(Reg, RegState::Kill);
}
MIB.addReg(Reg, getKillRegState(isKill));
}
return true;
}

View File

@ -1,11 +1,12 @@
; RUN: llc < %s -mtriple=arm-apple-darwin | FileCheck %s
; RUN: llc < %s -mtriple=thumbv6-apple-darwin
; RUN: llc < %s -mtriple=thumbv6-apple-darwin | FileCheck %s
; rdar://8015977
; rdar://8020118
define i8* @rt0(i32 %x) nounwind readnone {
entry:
; CHECK: rt0:
; CHECK: {r7, lr}
; CHECK: mov r0, lr
%0 = tail call i8* @llvm.returnaddress(i32 0)
ret i8* %0
@ -14,6 +15,7 @@ entry:
define i8* @rt2() nounwind readnone {
entry:
; CHECK: rt2:
; CHECK: {r7, lr}
; CHECK: ldr r0, [r7]
; CHECK: ldr r0, [r0]
; CHECK: ldr r0, [r0, #4]