[PowerPC] Don't list R11 as a patchpoint scratch register

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
This commit is contained in:
Hal Finkel 2015-01-17 03:57:34 +00:00
parent aaac99269f
commit 962cff0c08
3 changed files with 4 additions and 12 deletions

View 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;

View 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

View 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