From: Bob Wilson Date: Thu, 13 May 2010 19:58:24 +0000 (+0000) Subject: Fix pr7110: For non-Darwin targets UnspilledCS1GPRs may include high registers. X-Git-Tag: android-x86-6.0-r1~1003^2~6517 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1190c14b547a1e275e80e43a6ad52178312adbd7;p=android-x86%2Fexternal-llvm.git Fix pr7110: For non-Darwin targets UnspilledCS1GPRs may include high registers. Do not use those for Thumb1 functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103730 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/lib/Target/ARM/ARMBaseRegisterInfo.cpp index bf779ccf554..dd6204996dc 100644 --- a/lib/Target/ARM/ARMBaseRegisterInfo.cpp +++ b/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--; }