summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-05-13 19:58:24 +0000
committerBob Wilson <bob.wilson@apple.com>2010-05-13 19:58:24 +0000
commit208dc08c2bcb3dc0a448a1ed0fb150a80f2873c6 (patch)
treec82a3c44340a039241101bf45faa40fcebc92fbd /llvm
parent82135e5a2f2f53a94de46d0c974e4ab90dac0bb5 (diff)
downloadbcm5719-llvm-208dc08c2bcb3dc0a448a1ed0fb150a80f2873c6.tar.gz
bcm5719-llvm-208dc08c2bcb3dc0a448a1ed0fb150a80f2873c6.zip
Fix pr7110: For non-Darwin targets UnspilledCS1GPRs may include high registers.
Do not use those for Thumb1 functions. llvm-svn: 103730
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
index bf779ccf554..dd6204996dc 100644
--- a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
@@ -779,7 +779,9 @@ ARMBaseRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
while (NumExtras && !UnspilledCS1GPRs.empty()) {
unsigned Reg = UnspilledCS1GPRs.back();
UnspilledCS1GPRs.pop_back();
- if (!isReservedReg(MF, Reg)) {
+ if (!isReservedReg(MF, Reg) &&
+ (!AFI->isThumb1OnlyFunction() || isARMLowRegister(Reg) ||
+ Reg == ARM::LR)) {
Extras.push_back(Reg);
NumExtras--;
}
OpenPOWER on IntegriCloud