LLVMBuild.txt: Reformat.
[oota-llvm.git] / lib / Target / Sparc / SparcTargetMachine.cpp
index 7324e99af91ec6e24427c7fceca5dfae32e1631c..83f3474759b62d7719191400c3cdb766a1cac360 100644 (file)
@@ -25,21 +25,26 @@ extern "C" void LLVMInitializeSparcTarget() {
 
 static std::string computeDataLayout(const SparcSubtarget &ST) {
   // Sparc is big endian.
-  std::string Ret = "E";
+  std::string Ret = "E-m:e";
 
   // Some ABIs have 32bit pointers.
   if (!ST.is64Bit())
-    Ret += "-p:32:32:32";
+    Ret += "-p:32:32";
 
   // Alignments for 64 bit integers.
-  Ret += "-i64:64:64";
+  Ret += "-i64:64";
 
   // On SparcV9 128 floats are aligned to 128 bits, on others only to 64.
   // On SparcV9 registers can hold 64 or 32 bits, on others only 32.
   if (ST.is64Bit())
     Ret += "-n32:64";
   else
-    Ret += "-f128:64:64-n32";
+    Ret += "-f128:64-n32";
+
+  if (ST.is64Bit())
+    Ret += "-S128";
+  else
+    Ret += "-S64";
 
   return Ret;
 }