diff options
author | Hal Finkel <hfinkel@anl.gov> | 2014-03-06 01:28:23 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2014-03-06 01:28:23 +0000 |
commit | a14dc34e10c8a57d57f37b437e2e6221585ef958 (patch) | |
tree | a5de8efa21cc2bc7c0de52b424008d9feb64dabe /lib | |
parent | d6ea721c1f92d1b35af98fc4a6a74fb9f05be22d (diff) | |
download | llvm-a14dc34e10c8a57d57f37b437e2e6221585ef958.tar.gz llvm-a14dc34e10c8a57d57f37b437e2e6221585ef958.tar.bz2 llvm-a14dc34e10c8a57d57f37b437e2e6221585ef958.tar.xz |
The PPC global base register cannot be r0
The global base register cannot be r0 because it might end up as the first
argument to addi or addis. Fixes PR18316.
I don't have a small stable test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203054 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index 44821d31b5..65ea49a8e2 100644 --- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -272,11 +272,11 @@ SDNode *PPCDAGToDAGISel::getGlobalBaseReg() { DebugLoc dl; if (PPCLowering.getPointerTy() == MVT::i32) { - GlobalBaseReg = RegInfo->createVirtualRegister(&PPC::GPRCRegClass); + GlobalBaseReg = RegInfo->createVirtualRegister(&PPC::GPRC_NOR0RegClass); BuildMI(FirstMBB, MBBI, dl, TII.get(PPC::MovePCtoLR)); BuildMI(FirstMBB, MBBI, dl, TII.get(PPC::MFLR), GlobalBaseReg); } else { - GlobalBaseReg = RegInfo->createVirtualRegister(&PPC::G8RCRegClass); + GlobalBaseReg = RegInfo->createVirtualRegister(&PPC::G8RC_NOX0RegClass); BuildMI(FirstMBB, MBBI, dl, TII.get(PPC::MovePCtoLR8)); BuildMI(FirstMBB, MBBI, dl, TII.get(PPC::MFLR8), GlobalBaseReg); } |