From c418ae93a8bafb0590dd8445677f9c60cb9f0224 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Fri, 3 Jan 2014 19:22:05 +0000 Subject: [PATCH] Update for llvm's DataLayout including mangling information. llvm-svn: 198439 --- clang/lib/Basic/Targets.cpp | 95 +++++++++++++++++++------------- clang/test/CodeGen/target-data.c | 64 ++++++++++----------- 2 files changed, 89 insertions(+), 70 deletions(-) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index eb07942a7999..9dcd027b996e 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -485,7 +485,7 @@ public: this->UIntMaxType = TargetInfo::UnsignedLongLong; this->Int64Type = TargetInfo::SignedLongLong; this->SizeType = TargetInfo::UnsignedInt; - this->DescriptionString = "E-p:32:32-i64:64-n32:64"; + this->DescriptionString = "E-m:e-p:32:32-i64:64-n32:64"; } }; @@ -625,11 +625,11 @@ public: // RegParmMax is inherited from the underlying architecture this->LongDoubleFormat = &llvm::APFloat::IEEEdouble; if (Triple.getArch() == llvm::Triple::arm) { - this->DescriptionString = "e-p:32:32-i64:64-v128:64:128-n32-S128"; + this->DescriptionString = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S128"; } else if (Triple.getArch() == llvm::Triple::x86) { - this->DescriptionString = "e-p:32:32-i64:64-n8:16:32-S128"; + this->DescriptionString = "e-m:e-p:32:32-i64:64-n8:16:32-S128"; } else if (Triple.getArch() == llvm::Triple::x86_64) { - this->DescriptionString = "e-p:32:32-i64:64-n8:16:32:64-S128"; + this->DescriptionString = "e-m:e-p:32:32-i64:64-n8:16:32:64-S128"; } else if (Triple.getArch() == llvm::Triple::mipsel) { // Handled on mips' setDescriptionString. } else { @@ -1188,7 +1188,7 @@ namespace { class PPC32TargetInfo : public PPCTargetInfo { public: PPC32TargetInfo(const llvm::Triple &Triple) : PPCTargetInfo(Triple) { - DescriptionString = "E-p:32:32-i64:64-n32"; + DescriptionString = "E-m:e-p:32:32-i64:64-n32"; switch (getTriple().getOS()) { case llvm::Triple::Linux: @@ -1232,9 +1232,9 @@ public: if (getTriple().getOS() == llvm::Triple::FreeBSD) { LongDoubleWidth = LongDoubleAlign = 64; LongDoubleFormat = &llvm::APFloat::IEEEdouble; - DescriptionString = "E-i64:64-n32:64"; + DescriptionString = "E-m:e-i64:64-n32:64"; } else - DescriptionString = "E-i64:64-n32:64"; + DescriptionString = "E-m:e-i64:64-n32:64"; // PPC64 supports atomics up to 8 bytes. MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; @@ -1257,7 +1257,7 @@ public: PtrDiffType = SignedInt; // for http://llvm.org/bugs/show_bug.cgi?id=15726 LongLongAlign = 32; SuitableAlign = 128; - DescriptionString = "E-p:32:32-f64:32:64-n32"; + DescriptionString = "E-m:o-p:32:32-f64:32:64-n32"; } virtual BuiltinVaListKind getBuiltinVaListKind() const { return TargetInfo::CharPtrBuiltinVaList; @@ -1271,7 +1271,7 @@ public: : DarwinTargetInfo(Triple) { HasAlignMac68kSupport = true; SuitableAlign = 128; - DescriptionString = "E-i64:64-n32:64"; + DescriptionString = "E-m:o-i64:64-n32:64"; } }; } // end anonymous namespace. @@ -2917,7 +2917,7 @@ public: LongDoubleWidth = 96; LongDoubleAlign = 32; SuitableAlign = 128; - DescriptionString = "e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"; + DescriptionString = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"; SizeType = UnsignedInt; PtrDiffType = SignedInt; IntPtrType = SignedInt; @@ -3011,7 +3011,7 @@ public: MaxVectorAlign = 256; SizeType = UnsignedLong; IntPtrType = SignedLong; - DescriptionString = "e-p:32:32-f64:32:64-f80:128-n8:16:32-S128"; + DescriptionString = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"; HasAlignMac68kSupport = true; } @@ -3027,7 +3027,7 @@ public: TLSSupported = false; WCharType = UnsignedShort; DoubleAlign = LongLongAlign = 64; - DescriptionString = "e-p:32:32-i64:64-f80:32-n8:16:32-S32"; + DescriptionString = "e-m:c-p:32:32-i64:64-f80:32-n8:16:32-S32"; } virtual void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const { @@ -3094,7 +3094,7 @@ public: TLSSupported = false; WCharType = UnsignedShort; DoubleAlign = LongLongAlign = 64; - DescriptionString = "e-p:32:32-i64:64-f80:32-n8:16:32-S32"; + DescriptionString = "e-m:c-p:32:32-i64:64-f80:32-n8:16:32-S32"; } virtual void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const { @@ -3200,7 +3200,7 @@ public: Int64Type = SignedLong; RegParmMax = 6; - DescriptionString = "e-i64:64-f80:128-n8:16:32:64-S128"; + DescriptionString = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"; // Use fpret only for long double. RealTypeUsesObjCFPRet = (1 << TargetInfo::LongDouble); @@ -3323,6 +3323,7 @@ public: : DarwinTargetInfo(Triple) { Int64Type = SignedLongLong; MaxVectorAlign = 256; + DescriptionString = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"; } }; } // end anonymous namespace @@ -3372,7 +3373,7 @@ public: LongDoubleWidth = LongDoubleAlign = 128; PointerWidth = PointerAlign = 64; SuitableAlign = 128; - DescriptionString = "e-i64:64-i128:128-n32:64-S128"; + DescriptionString = "e-m:e-i64:64-i128:128-n32:64-S128"; WCharType = UnsignedInt; LongDoubleFormat = &llvm::APFloat::IEEEquad; @@ -3661,14 +3662,15 @@ class ARMTargetInfo : public TargetInfo { IsAAPCS = true; DoubleAlign = LongLongAlign = LongDoubleAlign = SuitableAlign = 64; + const llvm::Triple &T = getTriple(); // size_t is unsigned long on Darwin and netbsd. - if (getTriple().isOSDarwin() || getTriple().getOS() == llvm::Triple::NetBSD) + if (T.isOSDarwin() || T.getOS() == llvm::Triple::NetBSD) SizeType = UnsignedLong; else SizeType = UnsignedInt; - if (getTriple().getOS() == llvm::Triple::NetBSD) { + if (T.getOS() == llvm::Triple::NetBSD) { WCharType = SignedInt; } else { // AAPCS 7.1.1, ARM-Linux ABI 2.4: type of wchar_t is unsigned int. @@ -3682,22 +3684,32 @@ class ARMTargetInfo : public TargetInfo { if (IsThumb) { // Thumb1 add sp, #imm requires the immediate value be multiple of 4, // so set preferred for small types to 32. - DescriptionString = "e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64-" - "v128:64:128-a:0:32-n32-S64"; + if (T.isOSBinFormatMachO()) + DescriptionString = "e-m:o-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64-" + "v128:64:128-a:0:32-n32-S64"; + else + DescriptionString = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64-" + "v128:64:128-a:0:32-n32-S64"; + } else { - DescriptionString = "e-p:32:32-i64:64-v128:64:128-n32-S64"; + if (T.isOSBinFormatMachO()) + DescriptionString = "e-m:o-p:32:32-i64:64-v128:64:128-n32-S64"; + else + DescriptionString = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"; } // FIXME: Enumerated types are variable width in straight AAPCS. } void setABIAPCS() { + const llvm::Triple &T = getTriple(); + IsAAPCS = false; DoubleAlign = LongLongAlign = LongDoubleAlign = SuitableAlign = 32; // size_t is unsigned int on FreeBSD. - if (getTriple().getOS() == llvm::Triple::FreeBSD) + if (T.getOS() == llvm::Triple::FreeBSD) SizeType = UnsignedInt; else SizeType = UnsignedLong; @@ -3717,11 +3729,19 @@ class ARMTargetInfo : public TargetInfo { if (IsThumb) { // Thumb1 add sp, #imm requires the immediate value be multiple of 4, // so set preferred for small types to 32. - DescriptionString = "e-p:32:32-i1:8:32-i8:8:32-i16:16:32-f64:32:64" - "-v64:32:64-v128:32:128-a:0:32-n32-S32"; + if (T.isOSBinFormatMachO()) + DescriptionString = "e-m:o-p:32:32-i1:8:32-i8:8:32-i16:16:32-f64:32:64" + "-v64:32:64-v128:32:128-a:0:32-n32-S32"; + else + DescriptionString = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-f64:32:64" + "-v64:32:64-v128:32:128-a:0:32-n32-S32"; } else { - DescriptionString = - "e-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"; + if (T.isOSBinFormatMachO()) + DescriptionString = + "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"; + else + DescriptionString = + "e-m:e-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"; } // FIXME: Override "preferred align" for double and long long. @@ -4225,7 +4245,7 @@ class HexagonTargetInfo : public TargetInfo { public: HexagonTargetInfo(const llvm::Triple &Triple) : TargetInfo(Triple) { BigEndian = false; - DescriptionString = "e-p:32:32-i1:32-i64:64-a:0-n32"; + DescriptionString = "e-m:e-p:32:32-i1:32-i64:64-a:0-n32"; // {} in inline assembly are packet specifiers, not assembly variant // specifiers. @@ -4480,7 +4500,7 @@ void SparcTargetInfo::getGCCRegAliases(const GCCRegAlias *&Aliases, class SparcV8TargetInfo : public SparcTargetInfo { public: SparcV8TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) { - DescriptionString = "E-p:32:32-i64:64-f128:64-n32-S64"; + DescriptionString = "E-m:e-p:32:32-i64:64-f128:64-n32-S64"; } virtual void getTargetDefines(const LangOptions &Opts, @@ -4495,7 +4515,7 @@ class SparcV9TargetInfo : public SparcTargetInfo { public: SparcV9TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) { // FIXME: Support Sparc quad-precision long double? - DescriptionString = "E-i64:64-n32:64-S128"; + DescriptionString = "E-m:e-i64:64-n32:64-S128"; // This is an LP64 platform. LongWidth = LongAlign = PointerWidth = PointerAlign = 64; @@ -4561,8 +4581,7 @@ namespace { LongDoubleAlign = 64; LongDoubleFormat = &llvm::APFloat::IEEEquad; MinGlobalAlign = 16; - DescriptionString = "E-i1:8:16-i8:8:16-i64:64" - "-f128:64-a:8:16-n32:64"; + DescriptionString = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64"; MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; } virtual void getTargetDefines(const LangOptions &Opts, @@ -4670,7 +4689,7 @@ namespace { IntPtrType = SignedInt; PtrDiffType = SignedInt; SigAtomicType = SignedLong; - DescriptionString = "e-p:16:16-i32:16:32-n8:16"; + DescriptionString = "e-m:e-p:16:16-i32:16:32-n8:16"; } virtual void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const { @@ -5104,7 +5123,7 @@ public: class Mips32EBTargetInfo : public Mips32TargetInfoBase { virtual void setDescriptionString() { - DescriptionString = "E-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"; + DescriptionString = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"; } public: @@ -5121,7 +5140,7 @@ public: class Mips32ELTargetInfo : public Mips32TargetInfoBase { virtual void setDescriptionString() { - DescriptionString = "e-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"; + DescriptionString = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"; } public: @@ -5230,9 +5249,9 @@ public: class Mips64EBTargetInfo : public Mips64TargetInfoBase { virtual void setDescriptionString() { if (ABI == "n32") - DescriptionString = "E-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128"; + DescriptionString = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128"; else - DescriptionString = "E-i8:8:32-i16:16:32-i64:64-n32:64-S128"; + DescriptionString = "E-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128"; } @@ -5250,9 +5269,9 @@ public: class Mips64ELTargetInfo : public Mips64TargetInfoBase { virtual void setDescriptionString() { if (ABI == "n32") - DescriptionString = "e-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128"; + DescriptionString = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128"; else - DescriptionString = "e-i8:8:32-i16:16:32-i64:64-n32:64-S128"; + DescriptionString = "e-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128"; } public: Mips64ELTargetInfo(const llvm::Triple &Triple) @@ -5439,7 +5458,7 @@ public: WCharType = UnsignedChar; WIntType = UnsignedInt; UseZeroLengthBitfieldAlignment = true; - DescriptionString = "e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32" + DescriptionString = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32" "-f64:32-a:0:32-n32"; } virtual void getTargetDefines(const LangOptions &Opts, diff --git a/clang/test/CodeGen/target-data.c b/clang/test/CodeGen/target-data.c index 249268221e21..8aa3881545e2 100644 --- a/clang/test/CodeGen/target-data.c +++ b/clang/test/CodeGen/target-data.c @@ -1,78 +1,78 @@ // RUN: %clang_cc1 -triple i686-unknown-unknown -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-UNKNOWN %s -// I686-UNKNOWN: target datalayout = "e-p:32:32-f64:32:64-f80:32-n8:16:32-S128" +// I686-UNKNOWN: target datalayout = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128" // RUN: %clang_cc1 -triple i686-apple-darwin9 -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-DARWIN %s -// I686-DARWIN: target datalayout = "e-p:32:32-f64:32:64-f80:128-n8:16:32-S128" +// I686-DARWIN: target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128" // RUN: %clang_cc1 -triple i686-unknown-win32 -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-WIN32 %s -// I686-WIN32: target datalayout = "e-p:32:32-i64:64-f80:32-n8:16:32-S32" +// I686-WIN32: target datalayout = "e-m:c-p:32:32-i64:64-f80:32-n8:16:32-S32" // RUN: %clang_cc1 -triple i686-unknown-cygwin -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-CYGWIN %s -// I686-CYGWIN: target datalayout = "e-p:32:32-i64:64-f80:32-n8:16:32-S32" +// I686-CYGWIN: target datalayout = "e-m:c-p:32:32-i64:64-f80:32-n8:16:32-S32" // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=X86_64 %s -// X86_64: target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128" +// X86_64: target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" // RUN: %clang_cc1 -triple xcore-unknown-unknown -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=XCORE %s -// XCORE: target datalayout = "e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32-f64:32-a:0:32-n32" +// XCORE: target datalayout = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32-f64:32-a:0:32-n32" // RUN: %clang_cc1 -triple sparc-sun-solaris -emit-llvm -o - %s | \ // RUN: FileCheck %s --check-prefix=SPARC-V8 -// SPARC-V8: target datalayout = "E-p:32:32-i64:64-f128:64-n32-S64" +// SPARC-V8: target datalayout = "E-m:e-p:32:32-i64:64-f128:64-n32-S64" // RUN: %clang_cc1 -triple sparcv9-sun-solaris -emit-llvm -o - %s | \ // RUN: FileCheck %s --check-prefix=SPARC-V9 -// SPARC-V9: target datalayout = "E-i64:64-n32:64-S128" +// SPARC-V9: target datalayout = "E-m:e-i64:64-n32:64-S128" // RUN: %clang_cc1 -triple mipsel-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-32EL -// MIPS-32EL: target datalayout = "e-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64" +// MIPS-32EL: target datalayout = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64" // RUN: %clang_cc1 -triple mips-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-32EB -// MIPS-32EB: target datalayout = "E-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64" +// MIPS-32EB: target datalayout = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64" // RUN: %clang_cc1 -triple mips64el-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-64EL -// MIPS-64EL: target datalayout = "e-i8:8:32-i16:16:32-i64:64-n32:64-S128" +// MIPS-64EL: target datalayout = "e-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128" // RUN: %clang_cc1 -triple mips64el-linux-gnu -o - -emit-llvm -target-abi n32 \ // RUN: %s | FileCheck %s -check-prefix=MIPS-64EL-N32 -// MIPS-64EL-N32: target datalayout = "e-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128" +// MIPS-64EL-N32: target datalayout = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128" // RUN: %clang_cc1 -triple mips64-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-64EB -// MIPS-64EB: target datalayout = "E-i8:8:32-i16:16:32-i64:64-n32:64-S128" +// MIPS-64EB: target datalayout = "E-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128" // RUN: %clang_cc1 -triple mips64-linux-gnu -o - -emit-llvm %s -target-abi n32 \ // RUN: | FileCheck %s -check-prefix=MIPS-64EB-N32 -// MIPS-64EB-N32: target datalayout = "E-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128" +// MIPS-64EB-N32: target datalayout = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128" // RUN: %clang_cc1 -triple powerpc64-lv2 -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PS3 -// PS3: target datalayout = "E-p:32:32-i64:64-n32:64" +// PS3: target datalayout = "E-m:e-p:32:32-i64:64-n32:64" // RUN: %clang_cc1 -triple i686-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=I686-NACL -// I686-NACL: target datalayout = "e-p:32:32-i64:64-n8:16:32-S128" +// I686-NACL: target datalayout = "e-m:e-p:32:32-i64:64-n8:16:32-S128" // RUN: %clang_cc1 -triple x86_64-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=X86_64-NACL -// X86_64-NACL: target datalayout = "e-p:32:32-i64:64-n8:16:32:64-S128" +// X86_64-NACL: target datalayout = "e-m:e-p:32:32-i64:64-n8:16:32:64-S128" // RUN: %clang_cc1 -triple arm-nacl-gnueabi -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=ARM-NACL -// ARM-NACL: target datalayout = "e-p:32:32-i64:64-v128:64:128-n32-S128" +// ARM-NACL: target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S128" // RUN: %clang_cc1 -triple mipsel-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-NACL -// MIPS-NACL: target datalayout = "e-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64" +// MIPS-NACL: target datalayout = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64" // RUN: %clang_cc1 -triple le32-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=LE32-NACL @@ -80,23 +80,23 @@ // RUN: %clang_cc1 -triple powerpc-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC -// PPC: target datalayout = "E-p:32:32-i64:64-n32" +// PPC: target datalayout = "E-m:e-p:32:32-i64:64-n32" // RUN: %clang_cc1 -triple powerpc64-freebsd -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC64-FREEBSD -// PPC64-FREEBSD: target datalayout = "E-i64:64-n32:64" +// PPC64-FREEBSD: target datalayout = "E-m:e-i64:64-n32:64" // RUN: %clang_cc1 -triple powerpc64-linux -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC64-LINUX -// PPC64-LINUX: target datalayout = "E-i64:64-n32:64" +// PPC64-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 -// PPC32-DARWIN: target datalayout = "E-p:32:32-f64:32:64-n32" +// PPC32-DARWIN: target datalayout = "E-m:o-p:32:32-f64:32:64-n32" // RUN: %clang_cc1 -triple powerpc64-darwin -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC64-DARWIN -// PPC64-DARWIN: target datalayout = "E-i64:64-n32:64" +// PPC64-DARWIN: target datalayout = "E-m:o-i64:64-n32:64" // RUN: %clang_cc1 -triple nvptx-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=NVPTX @@ -120,35 +120,35 @@ // RUN: %clang_cc1 -triple aarch64-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=AARCH64 -// AARCH64: target datalayout = "e-i64:64-i128:128-n32:64-S128" +// AARCH64: target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128" // RUN: %clang_cc1 -triple thumb-unknown-gnueabi -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=THUMB -// THUMB: target datalayout = "e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64-v128:64:128-a:0:32-n32-S64" +// THUMB: target datalayout = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64-v128:64:128-a:0:32-n32-S64" // RUN: %clang_cc1 -triple arm-unknown-gnueabi -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=ARM -// ARM: target datalayout = "e-p:32:32-i64:64-v128:64:128-n32-S64" +// ARM: target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64" // RUN: %clang_cc1 -triple thumb-unknown -o - -emit-llvm -target-abi apcs-gnu \ // RUN: %s | FileCheck %s -check-prefix=THUMB-GNU -// THUMB-GNU: target datalayout = "e-p:32:32-i1:8:32-i8:8:32-i16:16:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32" +// THUMB-GNU: target datalayout = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32" // RUN: %clang_cc1 -triple arm-unknown -o - -emit-llvm -target-abi apcs-gnu \ // RUN: %s | FileCheck %s -check-prefix=ARM-GNU -// ARM-GNU: target datalayout = "e-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32" +// ARM-GNU: target datalayout = "e-m:e-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32" // RUN: %clang_cc1 -triple hexagon-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=HEXAGON -// HEXAGON: target datalayout = "e-p:32:32-i1:32-i64:64-a:0-n32" +// HEXAGON: target datalayout = "e-m:e-p:32:32-i1:32-i64:64-a:0-n32" // RUN: %clang_cc1 -triple s390x-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=SYSTEMZ -// SYSTEMZ: target datalayout = "E-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64" +// SYSTEMZ: target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64" // RUN: %clang_cc1 -triple msp430-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MSP430 -// MSP430: target datalayout = "e-p:16:16-i32:16:32-n8:16" +// MSP430: target datalayout = "e-m:e-p:16:16-i32:16:32-n8:16" // RUN: %clang_cc1 -triple tce-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=TCE