gchatelet created this revision.
gchatelet added a reviewer: efriedma.
Herald added subscribers: luke, kosarev, mattd, gchakrabarti, pmatos, asb,
asavonic, frasercrmck, kerbowa, luismarques, apazos, sameer.abuasal, s.egerton,
Jim, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, atanasyan,
edward-jones, zzheng, jrtc27, niosHD, sabuasal, simoncook, johnrusso, rbar,
fedor.sergeev, kbarton, jgravelle-google, sbc100, jvesely, nemanjai, sdardis,
dylanmckay, jyknight, dschuff.
Herald added a project: All.
gchatelet requested review of this revision.
Herald added subscribers: cfe-commits, pcwang-thead, MaskRay, aheejin,
jholewinski.
Herald added a project: clang.
This is to follow up on https://reviews.llvm.org/D57335.
The patch should not be submitted as-is, the tests are completely broken, but
before having a look at them I want to make sure this patch makes sense.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D143386
Files:
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/AMDGPU.cpp
clang/lib/Basic/Targets/ARC.h
clang/lib/Basic/Targets/AVR.h
clang/lib/Basic/Targets/BPF.h
clang/lib/Basic/Targets/CSKY.h
clang/lib/Basic/Targets/DirectX.h
clang/lib/Basic/Targets/Hexagon.h
clang/lib/Basic/Targets/Lanai.h
clang/lib/Basic/Targets/Le64.h
clang/lib/Basic/Targets/LoongArch.h
clang/lib/Basic/Targets/M68k.cpp
clang/lib/Basic/Targets/MSP430.h
clang/lib/Basic/Targets/Mips.h
clang/lib/Basic/Targets/NVPTX.cpp
clang/lib/Basic/Targets/OSTargets.h
clang/lib/Basic/Targets/PPC.h
clang/lib/Basic/Targets/RISCV.h
clang/lib/Basic/Targets/SPIR.h
clang/lib/Basic/Targets/Sparc.h
clang/lib/Basic/Targets/SystemZ.h
clang/lib/Basic/Targets/TCE.h
clang/lib/Basic/Targets/VE.h
clang/lib/Basic/Targets/WebAssembly.h
clang/lib/Basic/Targets/X86.h
clang/lib/Basic/Targets/XCore.h
Index: clang/lib/Basic/Targets/XCore.h
===================================================================
--- clang/lib/Basic/Targets/XCore.h
+++ 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");
}
Index: clang/lib/Basic/Targets/X86.h
===================================================================
--- clang/lib/Basic/Targets/X86.h
+++ 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<std::string> &Features,
Index: clang/lib/Basic/Targets/WebAssembly.h
===================================================================
--- clang/lib/Basic/Targets/WebAssembly.h
+++ 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:
Index: clang/lib/Basic/Targets/VE.h
===================================================================
--- clang/lib/Basic/Targets/VE.h
+++ 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");
}
Index: clang/lib/Basic/Targets/TCE.h
===================================================================
--- clang/lib/Basic/Targets/TCE.h
+++ 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-"
Index: clang/lib/Basic/Targets/SystemZ.h
===================================================================
--- clang/lib/Basic/Targets/SystemZ.h
+++ 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;
Index: clang/lib/Basic/Targets/Sparc.h
===================================================================
--- clang/lib/Basic/Targets/Sparc.h
+++ 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;
Index: clang/lib/Basic/Targets/SPIR.h
===================================================================
--- clang/lib/Basic/Targets/SPIR.h
+++ 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");
}
Index: clang/lib/Basic/Targets/RISCV.h
===================================================================
--- clang/lib/Basic/Targets/RISCV.h
+++ 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 {
Index: clang/lib/Basic/Targets/PPC.h
===================================================================
--- clang/lib/Basic/Targets/PPC.h
+++ 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<PPC64TargetInfo>(Triple, Opts) {
HasAlignMac68kSupport = true;
- resetDataLayout("E-m:o-i64:64-n32:64", "_");
+ resetDataLayout("E-m:o-Fi64-i64:64-n32:64", "_");
}
};
Index: clang/lib/Basic/Targets/OSTargets.h
===================================================================
--- clang/lib/Basic/Targets/OSTargets.h
+++ 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");
}
}
};
Index: clang/lib/Basic/Targets/NVPTX.cpp
===================================================================
--- clang/lib/Basic/Targets/NVPTX.cpp
+++ 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.
Index: clang/lib/Basic/Targets/Mips.h
===================================================================
--- clang/lib/Basic/Targets/Mips.h
+++ 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");
Index: clang/lib/Basic/Targets/MSP430.h
===================================================================
--- clang/lib/Basic/Targets/MSP430.h
+++ 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;
Index: clang/lib/Basic/Targets/M68k.cpp
===================================================================
--- clang/lib/Basic/Targets/M68k.cpp
+++ 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";
Index: clang/lib/Basic/Targets/LoongArch.h
===================================================================
--- clang/lib/Basic/Targets/LoongArch.h
+++ 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");
}
Index: clang/lib/Basic/Targets/Le64.h
===================================================================
--- clang/lib/Basic/Targets/Le64.h
+++ 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,
Index: clang/lib/Basic/Targets/Lanai.h
===================================================================
--- clang/lib/Basic/Targets/Lanai.h
+++ 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
Index: clang/lib/Basic/Targets/Hexagon.h
===================================================================
--- clang/lib/Basic/Targets/Hexagon.h
+++ 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;
Index: clang/lib/Basic/Targets/DirectX.h
===================================================================
--- clang/lib/Basic/Targets/DirectX.h
+++ 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; }
Index: clang/lib/Basic/Targets/CSKY.h
===================================================================
--- clang/lib/Basic/Targets/CSKY.h
+++ 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");
}
Index: clang/lib/Basic/Targets/BPF.h
===================================================================
--- clang/lib/Basic/Targets/BPF.h
+++ 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;
Index: clang/lib/Basic/Targets/AVR.h
===================================================================
--- clang/lib/Basic/Targets/AVR.h
+++ 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,
Index: clang/lib/Basic/Targets/ARC.h
===================================================================
--- clang/lib/Basic/Targets/ARC.h
+++ 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");
}
Index: clang/lib/Basic/Targets/AMDGPU.cpp
===================================================================
--- clang/lib/Basic/Targets/AMDGPU.cpp
+++ 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";
Index: clang/lib/Basic/Targets/AArch64.cpp
===================================================================
--- clang/lib/Basic/Targets/AArch64.cpp
+++ 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() ? "_" : "");
}
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits