[PowerPC] Don't list R11 as a patchpoint scratch register
authorHal Finkel <hfinkel@anl.gov>
Sat, 17 Jan 2015 03:57:34 +0000 (03:57 +0000)
committerHal Finkel <hfinkel@anl.gov>
Sat, 17 Jan 2015 03:57:34 +0000 (03:57 +0000)
R11's status is the same under both the PPC64 ELF V1 and V2 ABIs: it is
reserved for use as an "environment pointer" for compilation models that
require such a thing. We don't, we also don't need a second scratch register,
and because we support only "local" patchpoint call targets, we might as well
let R11 be used for anyregcc patchpoints.

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

lib/Target/PowerPC/PPCISelLowering.cpp
test/CodeGen/PowerPC/ppc64-anyregcc.ll
test/CodeGen/PowerPC/ppc64-stackmap.ll

index e17c4e675c69774289e3c448f87d0494a350115e..20e5115445e4491057d5122a62454136b516fdfc 100644 (file)
@@ -9910,16 +9910,8 @@ PPCTargetLowering::getScratchRegisters(CallingConv::ID) const {
   // site. Hence we include LR in the scratch registers, which are in turn added
   // as implicit-defs for stackmaps and patchpoints. The same reasoning applies
   // to CTR, which is used by any indirect call.
-  if (Subtarget.isELFv2ABI()) {
-    static const MCPhysReg ScratchRegs[] = {
-      PPC::X12, PPC::LR8, PPC::CTR8, 0
-    };
-
-    return ScratchRegs;
-  }
-
   static const MCPhysReg ScratchRegs[] = {
-    PPC::X12, PPC::X11, PPC::LR8, PPC::CTR8, 0
+    PPC::X12, PPC::LR8, PPC::CTR8, 0
   };
 
   return ScratchRegs;
index 7cd3c4b3820008826585e5b5a37129af96d38562..8b4cec5dabd49cc3e40f27dacba8f2610335e369 100644 (file)
@@ -26,9 +26,9 @@ target triple = "powerpc64-unknown-linux-gnu"
 ; CHECK-NEXT:   .quad property_access3
 ; CHECK-NEXT:   .quad 128
 ; CHECK-NEXT:   .quad anyreg_test1
-; CHECK-NEXT:   .quad 160
+; CHECK-NEXT:   .quad 144
 ; CHECK-NEXT:   .quad anyreg_test2
-; CHECK-NEXT:   .quad 160
+; CHECK-NEXT:   .quad 144
 ; CHECK-NEXT:   .quad patchpoint_spilldef
 ; CHECK-NEXT:   .quad 256
 ; CHECK-NEXT:   .quad patchpoint_spillargs
index 9be8d0c8ad44553a4197513bebf8810502106321..714d363388f6d6edc4984c61b6d37229468fdbde 100644 (file)
@@ -36,7 +36,7 @@ target triple = "powerpc64-unknown-linux-gnu"
 ; CHECK-NEXT:   .quad jsIntCall
 ; CHECK-NEXT:   .quad 128
 ; CHECK-NEXT:   .quad spilledValue
-; CHECK-NEXT:   .quad 320
+; CHECK-NEXT:   .quad 304
 ; CHECK-NEXT:   .quad spilledStackMapValue
 ; CHECK-NEXT:   .quad 224
 ; CHECK-NEXT:   .quad liveConstant