Fix the pointer size for the PS3 datalayout.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 17 Dec 2013 15:29:48 +0000 (15:29 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 17 Dec 2013 15:29:48 +0000 (15:29 +0000)
This will be tested from clang.

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

lib/Target/PowerPC/PPCTargetMachine.cpp

index 17799cb829de4599d575c9cfa1ff3ff12581246f..3d8fa1c195dc7628681b5829f9246bcbd7f0a0de 100644 (file)
@@ -35,11 +35,14 @@ extern "C" void LLVMInitializePowerPCTarget() {
 
 /// Return the datalayout string of a subtarget.
 static std::string getDataLayoutString(const PPCSubtarget &ST) {
+  const Triple &T = ST.getTargetTriple();
+
   // PPC is big endian.
   std::string Ret = "E";
 
-  // PPC32 has 32 bit pointers.
-  if (!ST.isPPC64())
+  // PPC32 has 32 bit pointers. The PS3 (OS Lv2) is a PPC64 machine with 32 bit
+  // pointers.
+  if (!ST.isPPC64() || T.getOS() == Triple::Lv2)
     Ret += "-p:32:32";
 
   // Note, the alignment values for f64 and i64 on ppc64 in Darwin