Fix f64 and f128 for ppc-darwin.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Dec 2013 15:06:25 +0000 (15:06 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Dec 2013 15:06:25 +0000 (15:06 +0000)
This patch adds -f64:32:64 to 32 bit ppc darwin since a f64 inside a
structure are only 32 bit aligned.

The patch also drop -f128:64:128 from all ppc darwin, since f128 is
128 bit aligned.

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

lib/Target/PowerPC/PPCTargetMachine.cpp

index 9e3f14ccaf01313bc7f87c79bd4be23e0ceddc7c..705dd783fc36e09b69178c64ccce834335457de0 100644 (file)
@@ -49,9 +49,11 @@ static std::string getDataLayoutString(const PPCSubtarget &ST) {
   // documentation are wrong; these are correct (i.e. "what gcc does").
   if (ST.isPPC64() || ST.isSVR4ABI())
     Ret += "-i64:64";
+  else
+    Ret += "-f64:32:64";
 
   // Set support for 128 floats depending on the ABI.
-  if (!ST.isPPC64() || !ST.isSVR4ABI())
+  if (!ST.isPPC64() && ST.isSVR4ABI())
     Ret += "-f128:64:128";
 
   // PPC64 has 32 and 64 bit registers, PPC32 has only 32 bit ones.