From: Hal Finkel Date: Sat, 17 Jan 2015 03:57:34 +0000 (+0000) Subject: [PowerPC] Don't list R11 as a patchpoint scratch register X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=962cff0c085e4f5b58e67ee73e5a82a3b2df6245;p=oota-llvm.git [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 --- diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp index e17c4e675c6..20e5115445e 100644 --- a/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/lib/Target/PowerPC/PPCISelLowering.cpp @@ -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; diff --git a/test/CodeGen/PowerPC/ppc64-anyregcc.ll b/test/CodeGen/PowerPC/ppc64-anyregcc.ll index 7cd3c4b3820..8b4cec5dabd 100644 --- a/test/CodeGen/PowerPC/ppc64-anyregcc.ll +++ b/test/CodeGen/PowerPC/ppc64-anyregcc.ll @@ -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 diff --git a/test/CodeGen/PowerPC/ppc64-stackmap.ll b/test/CodeGen/PowerPC/ppc64-stackmap.ll index 9be8d0c8ad4..714d363388f 100644 --- a/test/CodeGen/PowerPC/ppc64-stackmap.ll +++ b/test/CodeGen/PowerPC/ppc64-stackmap.ll @@ -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