IntMaxType = SignedLong;
Int64Type = SignedLong;
- std::string Layout;
-
- // PPC64LE is little endian.
- if (Triple.getArch() == llvm::Triple::ppc64le)
- Layout = "e";
- else
- Layout = "E";
-
- Layout += llvm::DataLayout::getManglingComponent(Triple);
-
- Layout += "-i64:64";
-
- // 128 bit integers are always aligned to 128 bits, but only 64-bit matters,
- // because __int128 is only supoprted on 64-bit targets.
- // FIXME: See if this is valid on other 64-bit ppc oses.
- if (Triple.isOSLinux())
- Layout += "-i128:128";
-
- Layout += "-n32:64";
-
- resetDataLayout(Layout);
-
- // PPC64LE started a new ABI.
- if (Triple.getArch() == llvm::Triple::ppc64le)
+ if ((Triple.getArch() == llvm::Triple::ppc64le)) {
+ resetDataLayout("e-m:e-i64:64-n32:64");
ABI = "elfv2";
- else
+ } else {
+ resetDataLayout("E-m:e-i64:64-n32:64");
ABI = "elfv1";
+ }
- switch (Triple.getOS()) {
+ switch (getTriple().getOS()) {
case llvm::Triple::FreeBSD:
LongDoubleWidth = LongDoubleAlign = 64;
LongDoubleFormat = &llvm::APFloat::IEEEdouble();
Int64Type = IsX32 ? SignedLongLong : SignedLong;
RegParmMax = 6;
- // Use 128-bit alignment for 128-bit integers in linux.
- // FIXME: Figure out if we should change this for other oses.
// Pointers are 32-bit in x32.
- if (IsX32) {
- if (Triple.isOSLinux())
- resetDataLayout(
- "e-m:e-p:32:32-i64:64-i128:128-f80:128-n8:16:32:64-S128");
- else
- resetDataLayout("e-m:e-p:32:32-i64:64-f80:128-n8:16:32:64-S128");
- } else if (IsWinCOFF)
- resetDataLayout("e-m:w-i64:64-f80:128-n8:16:32:64-S128");
- else if (Triple.isOSLinux())
- resetDataLayout("e-m:e-i64:64-i128:128-f80:128-n8:16:32:64-S128");
- else
- resetDataLayout("e-m:e-i64:64-f80:128-n8:16:32:64-S128");
+ resetDataLayout(IsX32
+ ? "e-m:e-p:32:32-i64:64-f80:128-n8:16:32:64-S128"
+ : IsWinCOFF ? "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
+ : "e-m:e-i64:64-f80:128-n8:16:32:64-S128");
// Use fpret only for long double.
RealTypeUsesObjCFPRet = (1 << TargetInfo::LongDouble);
// RUN: %clang_cc1 -triple powerpc64-linux -o - -emit-llvm %s | \
// RUN: FileCheck %s -check-prefix=PPC64-LINUX
-// PPC64-LINUX: target datalayout = "E-m:e-i64:64-i128:128-n32:64"
+// PPC64-LINUX: target datalayout = "E-m:e-i64:64-n32:64"
// RUN: %clang_cc1 -triple powerpc64le-linux -o - -emit-llvm %s | \
// RUN: FileCheck %s -check-prefix=PPC64LE-LINUX
-// PPC64LE-LINUX: target datalayout = "e-m:e-i64:64-i128:128-n32:64"
+// PPC64LE-LINUX: target datalayout = "e-m:e-i64:64-n32:64"
// RUN: %clang_cc1 -triple powerpc-darwin -o - -emit-llvm %s | \
// RUN: FileCheck %s -check-prefix=PPC32-DARWIN