Adjust processFunctionBeforeCalleeSavedScan() to correctly reserve a stack
authorJim Grosbach <grosbach@apple.com>
Mon, 28 Sep 2009 22:08:06 +0000 (22:08 +0000)
committerJim Grosbach <grosbach@apple.com>
Mon, 28 Sep 2009 22:08:06 +0000 (22:08 +0000)
slot for the register scavenger when compiling Thumb1 functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83023 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMBaseRegisterInfo.cpp

index ab3dcd6992cc8b145fc739dcf042bf55f0c0832b..9b923093923ab3416b2bbe6b2a2d7eb91d898c19 100644 (file)
@@ -536,7 +536,8 @@ ARMBaseRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
       }
     }
 
-    if (CSRegClasses[i] == ARM::GPRRegisterClass) {
+    if (CSRegClasses[i] == ARM::GPRRegisterClass ||
+        CSRegClasses[i] == ARM::tGPRRegisterClass) {
       if (Spilled) {
         NumGPRSpills++;
 
@@ -667,7 +668,8 @@ ARMBaseRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
             NumExtras--;
           }
         }
-        while (NumExtras && !UnspilledCS2GPRs.empty()) {
+        while (NumExtras && !UnspilledCS2GPRs.empty() &&
+               !AFI->isThumb1OnlyFunction()) {
           unsigned Reg = UnspilledCS2GPRs.back();
           UnspilledCS2GPRs.pop_back();
           if (!isReservedReg(MF, Reg)) {