Use r2 when encoding tls on ppc32. Fixes PR18305.
authorRoman Divacky <rdivacky@freebsd.org>
Sun, 22 Dec 2013 10:45:37 +0000 (10:45 +0000)
committerRoman Divacky <rdivacky@freebsd.org>
Sun, 22 Dec 2013 10:45:37 +0000 (10:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197878 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp

index 346a9beada90537dd4682ba2afdde15b07db0d23..66ebfd23817a6471c85acec6b53408108fa9a152 100644 (file)
@@ -217,7 +217,8 @@ unsigned PPCMCCodeEmitter::getTLSRegEncoding(const MCInst &MI, unsigned OpNo,
   // Return the thread-pointer register's encoding.
   Fixups.push_back(MCFixup::Create(0, MO.getExpr(),
                                    (MCFixupKind)PPC::fixup_ppc_nofixup));
-  return CTX.getRegisterInfo()->getEncodingValue(PPC::X13);
+  bool isPPC64 = TT.getArch() == Triple::ppc64 || TT.getArch() == Triple::ppc64le;
+  return CTX.getRegisterInfo()->getEncodingValue(isPPC64 ? PPC::X13 : PPC::R2);
 }
 
 unsigned PPCMCCodeEmitter::getTLSCallEncoding(const MCInst &MI, unsigned OpNo,