diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp --- a/clang/lib/Basic/Targets/AArch64.cpp +++ b/clang/lib/Basic/Targets/AArch64.cpp @@ -1302,11 +1302,11 @@ void AArch64leTargetInfo::setDataLayout() { if (getTriple().isOSBinFormatMachO()) { if(getTriple().isArch32Bit()) - resetDataLayout("e-m:o-p:32:32-i64:64-i128:128-n32:64-S128", "_"); + resetDataLayout("e-m:o-p:32:32-Fi32-i64:64-i128:128-n32:64-S128", "_"); else - resetDataLayout("e-m:o-i64:64-i128:128-n32:64-S128", "_"); + resetDataLayout("e-m:o-Fi32-i64:64-i128:128-n32:64-S128", "_"); } else - resetDataLayout("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"); + resetDataLayout("e-m:e-Fi32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"); } void AArch64leTargetInfo::getTargetDefines(const LangOptions &Opts, @@ -1329,7 +1329,7 @@ void AArch64beTargetInfo::setDataLayout() { assert(!getTriple().isOSBinFormatMachO()); - resetDataLayout("E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"); + resetDataLayout("E-m:e-Fi32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"); } WindowsARM64TargetInfo::WindowsARM64TargetInfo(const llvm::Triple &Triple, @@ -1352,8 +1352,8 @@ void WindowsARM64TargetInfo::setDataLayout() { resetDataLayout(Triple.isOSBinFormatMachO() - ? "e-m:o-i64:64-i128:128-n32:64-S128" - : "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128", + ? "e-m:o-Fi32-i64:64-i128:128-n32:64-S128" + : "e-m:w-p:64:64-Fi64-i32:32-i64:64-i128:128-n32:64-S128", Triple.isOSBinFormatMachO() ? "_" : ""); } diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp --- a/clang/lib/Basic/Targets/AMDGPU.cpp +++ b/clang/lib/Basic/Targets/AMDGPU.cpp @@ -28,11 +28,11 @@ // getPointerWidthV(). static const char *const DataLayoutStringR600 = - "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128" + "e-p:32:32-Fi32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128" "-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1"; static const char *const DataLayoutStringAMDGCN = - "e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32" + "e-p:64:64-Fi64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32" "-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128" "-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1" "-ni:7"; diff --git a/clang/lib/Basic/Targets/ARC.h b/clang/lib/Basic/Targets/ARC.h --- a/clang/lib/Basic/Targets/ARC.h +++ b/clang/lib/Basic/Targets/ARC.h @@ -33,7 +33,7 @@ PtrDiffType = SignedInt; IntPtrType = SignedInt; UseZeroLengthBitfieldAlignment = true; - resetDataLayout("e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-" + resetDataLayout("e-m:e-p:32:32-Fi32-i1:8:32-i8:8:32-i16:16:32-" "i32:32:32-f32:32:32-i64:32-f64:32-a:0:32-n32"); } diff --git a/clang/lib/Basic/Targets/AVR.h b/clang/lib/Basic/Targets/AVR.h --- a/clang/lib/Basic/Targets/AVR.h +++ b/clang/lib/Basic/Targets/AVR.h @@ -55,7 +55,8 @@ Int16Type = SignedInt; Char32Type = UnsignedLong; SigAtomicType = SignedChar; - resetDataLayout("e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"); + resetDataLayout( + "e-P1-p:16:8-Fi8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"); } void getTargetDefines(const LangOptions &Opts, diff --git a/clang/lib/Basic/Targets/BPF.h b/clang/lib/Basic/Targets/BPF.h --- a/clang/lib/Basic/Targets/BPF.h +++ b/clang/lib/Basic/Targets/BPF.h @@ -35,9 +35,9 @@ Int64Type = SignedLong; RegParmMax = 5; if (Triple.getArch() == llvm::Triple::bpfeb) { - resetDataLayout("E-m:e-p:64:64-i64:64-i128:128-n32:64-S128"); + resetDataLayout("E-m:e-p:64:64-Fi64-i64:64-i128:128-n32:64-S128"); } else { - resetDataLayout("e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"); + resetDataLayout("e-m:e-p:64:64-Fi64-i64:64-i128:128-n32:64-S128"); } MaxAtomicPromoteWidth = 64; MaxAtomicInlineWidth = 64; diff --git a/clang/lib/Basic/Targets/CSKY.h b/clang/lib/Basic/Targets/CSKY.h --- a/clang/lib/Basic/Targets/CSKY.h +++ b/clang/lib/Basic/Targets/CSKY.h @@ -52,8 +52,9 @@ UseZeroLengthBitfieldAlignment = true; MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 32; - resetDataLayout("e-m:e-S32-p:32:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-" - "v64:32:32-v128:32:32-a:0:32-Fi32-n32"); + resetDataLayout( + "e-m:e-S32-p:32:32-Fi32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-" + "v64:32:32-v128:32:32-a:0:32-Fi32-n32"); setABI("abiv2"); } diff --git a/clang/lib/Basic/Targets/DirectX.h b/clang/lib/Basic/Targets/DirectX.h --- a/clang/lib/Basic/Targets/DirectX.h +++ b/clang/lib/Basic/Targets/DirectX.h @@ -58,8 +58,9 @@ NoAsmVariants = true; PlatformMinVersion = Triple.getOSVersion(); PlatformName = llvm::Triple::getOSTypeName(Triple.getOS()); - resetDataLayout("e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:" - "32-f64:64-n8:16:32:64"); + resetDataLayout( + "e-m:e-p:32:32-Fi32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:" + "32-f64:64-n8:16:32:64"); TheCXXABI.set(TargetCXXABI::Microsoft); } bool useFP16ConversionIntrinsics() const override { return false; } diff --git a/clang/lib/Basic/Targets/Hexagon.h b/clang/lib/Basic/Targets/Hexagon.h --- a/clang/lib/Basic/Targets/Hexagon.h +++ b/clang/lib/Basic/Targets/Hexagon.h @@ -41,7 +41,7 @@ // alignment would be 512*alignment(i1), which is 512 bytes, instead of // the required minimum of 64 bytes. resetDataLayout( - "e-m:e-p:32:32:32-a:0-n16:32-" + "e-m:e-p:32:32:32-Fi32-a:0-n16:32-" "i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-" "v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"); SizeType = UnsignedInt; diff --git a/clang/lib/Basic/Targets/Lanai.h b/clang/lib/Basic/Targets/Lanai.h --- a/clang/lib/Basic/Targets/Lanai.h +++ b/clang/lib/Basic/Targets/Lanai.h @@ -36,13 +36,13 @@ LanaiTargetInfo(const llvm::Triple &Triple, const TargetOptions &) : TargetInfo(Triple) { // Description string has to be kept in sync with backend. - resetDataLayout("E" // Big endian - "-m:e" // ELF name manging - "-p:32:32" // 32 bit pointers, 32 bit aligned - "-i64:64" // 64 bit integers, 64 bit aligned - "-a:0:32" // 32 bit alignment of objects of aggregate type - "-n32" // 32 bit native integer width - "-S64" // 64 bit natural stack alignment + resetDataLayout("E" // Big endian + "-m:e" // ELF name manging + "-p:32:32-Fi32" // 32 bit pointers, 32 bit aligned + "-i64:64" // 64 bit integers, 64 bit aligned + "-a:0:32" // 32 bit alignment of objects of aggregate type + "-n32" // 32 bit native integer width + "-S64" // 64 bit natural stack alignment ); // Setting RegParmMax equal to what mregparm was set to in the old diff --git a/clang/lib/Basic/Targets/Le64.h b/clang/lib/Basic/Targets/Le64.h --- a/clang/lib/Basic/Targets/Le64.h +++ b/clang/lib/Basic/Targets/Le64.h @@ -29,7 +29,7 @@ NoAsmVariants = true; LongWidth = LongAlign = PointerWidth = PointerAlign = 64; MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; - resetDataLayout("e-m:e-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128"); + resetDataLayout("e-m:e-Fi64-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128"); } void getTargetDefines(const LangOptions &Opts, diff --git a/clang/lib/Basic/Targets/LoongArch.h b/clang/lib/Basic/Targets/LoongArch.h --- a/clang/lib/Basic/Targets/LoongArch.h +++ b/clang/lib/Basic/Targets/LoongArch.h @@ -90,7 +90,7 @@ IntPtrType = SignedInt; PtrDiffType = SignedInt; SizeType = UnsignedInt; - resetDataLayout("e-m:e-p:32:32-i64:64-n32-S128"); + resetDataLayout("e-m:e-p:32:32-Fi32-i64:64-n32-S128"); // TODO: select appropriate ABI. setABI("ilp32d"); } @@ -114,7 +114,7 @@ : LoongArchTargetInfo(Triple, Opts) { LongWidth = LongAlign = PointerWidth = PointerAlign = 64; IntMaxType = Int64Type = SignedLong; - resetDataLayout("e-m:e-p:64:64-i64:64-i128:128-n64-S128"); + resetDataLayout("e-m:e-p:64:64-Fi64-i64:64-i128:128-n64-S128"); // TODO: select appropriate ABI. setABI("lp64d"); } diff --git a/clang/lib/Basic/Targets/M68k.cpp b/clang/lib/Basic/Targets/M68k.cpp --- a/clang/lib/Basic/Targets/M68k.cpp +++ b/clang/lib/Basic/Targets/M68k.cpp @@ -39,7 +39,7 @@ Layout += "-m:e"; // M68k pointers are always 32 bit wide even for 16-bit CPUs - Layout += "-p:32:16:32"; + Layout += "-p:32:16:32-Fi32"; // M68k integer data types Layout += "-i8:8:8-i16:16:16-i32:16:32"; diff --git a/clang/lib/Basic/Targets/MSP430.h b/clang/lib/Basic/Targets/MSP430.h --- a/clang/lib/Basic/Targets/MSP430.h +++ b/clang/lib/Basic/Targets/MSP430.h @@ -45,7 +45,8 @@ IntPtrType = SignedInt; PtrDiffType = SignedInt; SigAtomicType = SignedLong; - resetDataLayout("e-m:e-p:16:16-i32:16-i64:16-f32:16-f64:16-a:8-n8:16-S16"); + resetDataLayout( + "e-m:e-p:16:16-Fi16-i32:16-i64:16-f32:16-f64:16-a:8-n8:16-S16"); } void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override; diff --git a/clang/lib/Basic/Targets/Mips.h b/clang/lib/Basic/Targets/Mips.h --- a/clang/lib/Basic/Targets/Mips.h +++ b/clang/lib/Basic/Targets/Mips.h @@ -26,11 +26,11 @@ StringRef Layout; if (ABI == "o32") - Layout = "m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"; + Layout = "m:m-p:32:32-Fi32-i8:8:32-i16:16:32-i64:64-n32-S64"; else if (ABI == "n32") - Layout = "m:e-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128"; + Layout = "m:e-p:32:32-Fi32-i8:8:32-i16:16:32-i64:64-n32:64-S128"; else if (ABI == "n64") - Layout = "m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"; + Layout = "m:e-Fi64-i8:8:32-i16:16:32-i64:64-n32:64-S128"; else llvm_unreachable("Invalid ABI"); diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp --- a/clang/lib/Basic/Targets/NVPTX.cpp +++ b/clang/lib/Basic/Targets/NVPTX.cpp @@ -62,12 +62,12 @@ GPU = CudaArch::SM_20; if (TargetPointerWidth == 32) - resetDataLayout("e-p:32:32-i64:64-i128:128-v16:16-v32:32-n16:32:64"); + resetDataLayout("e-p:32:32-Fi32-i64:64-i128:128-v16:16-v32:32-n16:32:64"); else if (Opts.NVPTXUseShortPointers) - resetDataLayout( - "e-p3:32:32-p4:32:32-p5:32:32-i64:64-i128:128-v16:16-v32:32-n16:32:64"); + resetDataLayout("e-p3:32:32-Fi32-p4:32:32-p5:32:32-i64:64-i128:128-v16:16-" + "v32:32-n16:32:64"); else - resetDataLayout("e-i64:64-i128:128-v16:16-v32:32-n16:32:64"); + resetDataLayout("e-Fi64-i64:64-i128:128-v16:16-v32:32-n16:32:64"); // If possible, get a TargetInfo for our host triple, so we can match its // types. diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -519,7 +519,7 @@ this->IntMaxType = TargetInfo::SignedLongLong; this->Int64Type = TargetInfo::SignedLongLong; this->SizeType = TargetInfo::UnsignedInt; - this->resetDataLayout("E-m:e-p:32:32-i64:64-n32:64"); + this->resetDataLayout("E-m:e-p:32:32-Fi32-i64:64-n32:64"); } }; @@ -898,16 +898,18 @@ if (Triple.getArch() == llvm::Triple::arm) { // Handled in ARM's setABI(). } else if (Triple.getArch() == llvm::Triple::x86) { - this->resetDataLayout("e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-" - "i64:64-n8:16:32-S128"); + this->resetDataLayout( + "e-m:e-p:32:32-Fi32-p270:32:32-p271:32:32-p272:64:64-" + "i64:64-n8:16:32-S128"); } else if (Triple.getArch() == llvm::Triple::x86_64) { - this->resetDataLayout("e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-" - "i64:64-n8:16:32:64-S128"); + this->resetDataLayout( + "e-m:e-p:32:32-Fi32-p270:32:32-p271:32:32-p272:64:64-" + "i64:64-n8:16:32:64-S128"); } else if (Triple.getArch() == llvm::Triple::mipsel) { // Handled on mips' setDataLayout. } else { assert(Triple.getArch() == llvm::Triple::le32); - this->resetDataLayout("e-p:32:32-i64:64"); + this->resetDataLayout("e-p:32:32-Fi32-i64:64"); } } }; diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h --- a/clang/lib/Basic/Targets/PPC.h +++ b/clang/lib/Basic/Targets/PPC.h @@ -364,11 +364,11 @@ PPC32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : PPCTargetInfo(Triple, Opts) { if (Triple.isOSAIX()) - resetDataLayout("E-m:a-p:32:32-i64:64-n32"); + resetDataLayout("E-m:a-p:32:32-Fi32-i64:64-n32"); else if (Triple.getArch() == llvm::Triple::ppcle) - resetDataLayout("e-m:e-p:32:32-i64:64-n32"); + resetDataLayout("e-m:e-p:32:32-Fi32-i64:64-n32"); else - resetDataLayout("E-m:e-p:32:32-i64:64-n32"); + resetDataLayout("E-m:e-p:32:32-Fi32-i64:64-n32"); switch (getTriple().getOS()) { case llvm::Triple::Linux: @@ -419,7 +419,7 @@ if (Triple.isOSAIX()) { // TODO: Set appropriate ABI for AIX platform. - DataLayout = "E-m:a-i64:64-n32:64"; + DataLayout = "E-m:a-Fi64-i64:64-n32:64"; LongDoubleWidth = 64; LongDoubleAlign = DoubleAlign = 32; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); @@ -488,7 +488,7 @@ BoolWidth = BoolAlign = 32; // XXX support -mone-byte-bool? PtrDiffType = SignedInt; // for http://llvm.org/bugs/show_bug.cgi?id=15726 LongLongAlign = 32; - resetDataLayout("E-m:o-p:32:32-f64:32:64-n32", "_"); + resetDataLayout("E-m:o-p:32:32-Fi32-f64:32:64-n32", "_"); } BuiltinVaListKind getBuiltinVaListKind() const override { @@ -502,7 +502,7 @@ DarwinPPC64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : DarwinTargetInfo(Triple, Opts) { HasAlignMac68kSupport = true; - resetDataLayout("E-m:o-i64:64-n32:64", "_"); + resetDataLayout("E-m:o-Fi64-i64:64-n32:64", "_"); } }; diff --git a/clang/lib/Basic/Targets/RISCV.h b/clang/lib/Basic/Targets/RISCV.h --- a/clang/lib/Basic/Targets/RISCV.h +++ b/clang/lib/Basic/Targets/RISCV.h @@ -116,7 +116,7 @@ IntPtrType = SignedInt; PtrDiffType = SignedInt; SizeType = UnsignedInt; - resetDataLayout("e-m:e-p:32:32-i64:64-n32-S128"); + resetDataLayout("e-m:e-p:32:32-Fi32-i64:64-n32-S128"); } bool setABI(const std::string &Name) override { @@ -140,7 +140,7 @@ : RISCVTargetInfo(Triple, Opts) { LongWidth = LongAlign = PointerWidth = PointerAlign = 64; IntMaxType = Int64Type = SignedLong; - resetDataLayout("e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"); + resetDataLayout("e-m:e-p:64:64-Fi64-i64:64-i128:128-n32:64-S128"); } bool setABI(const std::string &Name) override { diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h --- a/clang/lib/Basic/Targets/SPIR.h +++ b/clang/lib/Basic/Targets/SPIR.h @@ -204,7 +204,7 @@ PointerWidth = PointerAlign = 32; SizeType = TargetInfo::UnsignedInt; PtrDiffType = IntPtrType = TargetInfo::SignedInt; - resetDataLayout("e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-" + resetDataLayout("e-p:32:32-Fi32-i64:64-v16:16-v24:32-v32:32-v48:64-" "v96:128-v192:256-v256:256-v512:512-v1024:1024"); } @@ -221,7 +221,7 @@ PointerWidth = PointerAlign = 64; SizeType = TargetInfo::UnsignedLong; PtrDiffType = IntPtrType = TargetInfo::SignedLong; - resetDataLayout("e-i64:64-v16:16-v24:32-v32:32-v48:64-" + resetDataLayout("e-Fi64-i64:64-v16:16-v24:32-v32:32-v48:64-" "v96:128-v192:256-v256:256-v512:512-v1024:1024"); } @@ -257,7 +257,7 @@ PointerWidth = PointerAlign = 32; SizeType = TargetInfo::UnsignedInt; PtrDiffType = IntPtrType = TargetInfo::SignedInt; - resetDataLayout("e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-" + resetDataLayout("e-p:32:32-Fi32-i64:64-v16:16-v24:32-v32:32-v48:64-" "v96:128-v192:256-v256:256-v512:512-v1024:1024"); } @@ -274,7 +274,7 @@ PointerWidth = PointerAlign = 64; SizeType = TargetInfo::UnsignedLong; PtrDiffType = IntPtrType = TargetInfo::SignedLong; - resetDataLayout("e-i64:64-v16:16-v24:32-v32:32-v48:64-" + resetDataLayout("e-Fi64-i64:64-v16:16-v24:32-v32:32-v48:64-" "v96:128-v192:256-v256:256-v512:512-v1024:1024"); } diff --git a/clang/lib/Basic/Targets/Sparc.h b/clang/lib/Basic/Targets/Sparc.h --- a/clang/lib/Basic/Targets/Sparc.h +++ b/clang/lib/Basic/Targets/Sparc.h @@ -147,7 +147,7 @@ public: SparcV8TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : SparcTargetInfo(Triple, Opts) { - resetDataLayout("E-m:e-p:32:32-i64:64-f128:64-n32-S64"); + resetDataLayout("E-m:e-Fi32-p:32:32-i64:64-f128:64-n32-S64"); // NetBSD / OpenBSD use long (same as llvm default); everyone else uses int. switch (getTriple().getOS()) { default: @@ -184,7 +184,7 @@ public: SparcV8elTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : SparcV8TargetInfo(Triple, Opts) { - resetDataLayout("e-m:e-p:32:32-i64:64-f128:64-n32-S64"); + resetDataLayout("e-m:e-p:32:32-Fi32-i64:64-f128:64-n32-S64"); } }; @@ -194,7 +194,7 @@ SparcV9TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : SparcTargetInfo(Triple, Opts) { // FIXME: Support Sparc quad-precision long double? - resetDataLayout("E-m:e-i64:64-n32:64-S128"); + resetDataLayout("E-m:e-Fi64-i64:64-n32:64-S128"); // This is an LP64 platform. LongWidth = LongAlign = PointerWidth = PointerAlign = 64; diff --git a/clang/lib/Basic/Targets/SystemZ.h b/clang/lib/Basic/Targets/SystemZ.h --- a/clang/lib/Basic/Targets/SystemZ.h +++ b/clang/lib/Basic/Targets/SystemZ.h @@ -53,9 +53,9 @@ // Compared to Linux/ELF, the data layout differs only in that name // mangling is GOFF. resetDataLayout( - "E-m:l-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"); + "E-m:l-Fi64-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"); } else - resetDataLayout("E-m:e-i1:8:16-i8:8:16-i64:64-f128:64" + resetDataLayout("E-m:e-Fi64-i1:8:16-i8:8:16-i64:64-f128:64" "-v128:64-a:8:16-n32:64"); MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; HasStrictFP = true; diff --git a/clang/lib/Basic/Targets/TCE.h b/clang/lib/Basic/Targets/TCE.h --- a/clang/lib/Basic/Targets/TCE.h +++ b/clang/lib/Basic/Targets/TCE.h @@ -78,7 +78,7 @@ FloatFormat = &llvm::APFloat::IEEEsingle(); DoubleFormat = &llvm::APFloat::IEEEsingle(); LongDoubleFormat = &llvm::APFloat::IEEEsingle(); - resetDataLayout("E-p:32:32:32-i1:8:8-i8:8:32-" + resetDataLayout("E-p:32:32:32-Fi8-i1:8:8-i8:8:32-" "i16:16:32-i32:32:32-i64:32:32-" "f32:32:32-f64:32:32-v64:32:32-" "v128:32:32-v256:32:32-v512:32:32-" @@ -122,7 +122,7 @@ : TCETargetInfo(Triple, Opts) { BigEndian = false; - resetDataLayout("e-p:32:32:32-i1:8:8-i8:8:32-" + resetDataLayout("e-p:32:32:32-Fi8-i1:8:8-i8:8:32-" "i16:16:32-i32:32:32-i64:32:32-" "f32:32:32-f64:32:32-v64:32:32-" "v128:32:32-v256:32:32-v512:32:32-" diff --git a/clang/lib/Basic/Targets/VE.h b/clang/lib/Basic/Targets/VE.h --- a/clang/lib/Basic/Targets/VE.h +++ b/clang/lib/Basic/Targets/VE.h @@ -45,7 +45,8 @@ WIntType = UnsignedInt; UseZeroLengthBitfieldAlignment = true; resetDataLayout( - "e-m:e-i64:64-n32:64-S128-v64:64:64-v128:64:64-v256:64:64-v512:64:64-" + "e-m:e-i64:64-n32:64-Fi64-S128-v64:64:64-v128:64:64-v256:64:64-v512:64:" + "64-" "v1024:64:64-v2048:64:64-v4096:64:64-v8192:64:64-v16384:64:64"); } diff --git a/clang/lib/Basic/Targets/WebAssembly.h b/clang/lib/Basic/Targets/WebAssembly.h --- a/clang/lib/Basic/Targets/WebAssembly.h +++ b/clang/lib/Basic/Targets/WebAssembly.h @@ -151,11 +151,12 @@ const TargetOptions &Opts) : WebAssemblyTargetInfo(T, Opts) { if (T.isOSEmscripten()) - resetDataLayout("e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-f128:64-n32:64-" - "S128-ni:1:10:20"); + resetDataLayout( + "e-m:e-p:32:32-Fi32-p10:8:8-p20:8:8-i64:64-f128:64-n32:64-" + "S128-ni:1:10:20"); else resetDataLayout( - "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"); + "e-m:e-p:32:32-Fi32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"); } protected: @@ -175,11 +176,12 @@ PtrDiffType = SignedLong; IntPtrType = SignedLong; if (T.isOSEmscripten()) - resetDataLayout("e-m:e-p:64:64-p10:8:8-p20:8:8-i64:64-f128:64-n32:64-" - "S128-ni:1:10:20"); + resetDataLayout( + "e-m:e-p:64:64-Fi32-p10:8:8-p20:8:8-i64:64-f128:64-n32:64-" + "S128-ni:1:10:20"); else resetDataLayout( - "e-m:e-p:64:64-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"); + "e-m:e-p:64:64-Fi32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"); } protected: diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h --- a/clang/lib/Basic/Targets/X86.h +++ b/clang/lib/Basic/Targets/X86.h @@ -536,8 +536,10 @@ UseSignedCharForObjCBool = false; SizeType = UnsignedLong; IntPtrType = SignedLong; - resetDataLayout("e-m:o-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-" - "f80:128-n8:16:32-S128", "_"); + resetDataLayout( + "e-m:o-p:32:32-Fn32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-" + "f80:128-n8:16:32-S128", + "_"); HasAlignMac68kSupport = true; } @@ -564,7 +566,7 @@ getTriple().isOSWindows() && getTriple().isOSBinFormatCOFF(); bool IsMSVC = getTriple().isWindowsMSVCEnvironment(); std::string Layout = IsWinCOFF ? "e-m:x" : "e-m:e"; - Layout += "-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-"; + Layout += "-p:32:32-Fn32-p270:32:32-p271:32:32-p272:64:64-i64:64-"; Layout += IsMSVC ? "f80:128" : "f80:32"; Layout += "-n8:16:32-a:0:32-S32"; resetDataLayout(Layout, IsWinCOFF ? "_" : ""); @@ -615,9 +617,10 @@ : X86_32TargetInfo(Triple, Opts) { this->WCharType = TargetInfo::UnsignedShort; DoubleAlign = LongLongAlign = 64; - resetDataLayout("e-m:x-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:" - "32-n8:16:32-a:0:32-S32", - "_"); + resetDataLayout( + "e-m:x-p:32:32-Fn32-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:" + "32-n8:16:32-a:0:32-S32", + "_"); } void getTargetDefines(const LangOptions &Opts, @@ -654,8 +657,9 @@ : X86_32TargetInfo(Triple, Opts) { LongDoubleWidth = 64; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); - resetDataLayout("e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:32-f64:" - "32-f128:32-n8:16:32-a:0:32-S32"); + resetDataLayout( + "e-m:e-p:32:32-Fn32-p270:32:32-p271:32:32-p272:64:64-i64:32-f64:" + "32-f128:32-n8:16:32-a:0:32-S32"); WIntType = UnsignedInt; } @@ -714,12 +718,13 @@ RegParmMax = 6; // Pointers are 32-bit in x32. - resetDataLayout(IsX32 ? "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-" - "i64:64-f80:128-n8:16:32:64-S128" - : IsWinCOFF ? "e-m:w-p270:32:32-p271:32:32-p272:64:" - "64-i64:64-f80:128-n8:16:32:64-S128" - : "e-m:e-p270:32:32-p271:32:32-p272:64:" - "64-i64:64-f80:128-n8:16:32:64-S128"); + resetDataLayout(IsX32 + ? "e-m:e-p:32:32-Fn32-p270:32:32-p271:32:32-p272:64:64-" + "i64:64-f80:128-n8:16:32:64-S128" + : IsWinCOFF ? "e-m:w-Fn64-p270:32:32-p271:32:32-p272:64:" + "64-i64:64-f80:128-n8:16:32:64-S128" + : "e-m:e-Fn64-p270:32:32-p271:32:32-p272:64:" + "64-i64:64-f80:128-n8:16:32:64-S128"); // Use fpret only for long double. RealTypeUsesObjCFPRetMask = (unsigned)FloatModeKind::LongDouble; @@ -916,8 +921,10 @@ llvm::Triple T = llvm::Triple(Triple); if (T.isiOS()) UseSignedCharForObjCBool = false; - resetDataLayout("e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:" - "16:32:64-S128", "_"); + resetDataLayout( + "e-m:o-Fn64-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:" + "16:32:64-S128", + "_"); } bool handleTargetFeatures(std::vector &Features, diff --git a/clang/lib/Basic/Targets/XCore.h b/clang/lib/Basic/Targets/XCore.h --- a/clang/lib/Basic/Targets/XCore.h +++ b/clang/lib/Basic/Targets/XCore.h @@ -36,7 +36,7 @@ WCharType = UnsignedChar; WIntType = UnsignedInt; UseZeroLengthBitfieldAlignment = true; - resetDataLayout("e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32" + resetDataLayout("e-m:e-Fi32-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32" "-f64:32-a:0:32-n32"); }