[LLVM] [Clang] Backport "Support for Gentoo *t64
triples (64-bit time_t ABIs)"
This is a backport of 387b37af1aabf325e9be844361564dfad8d45c75 for 19.x, adjusted to add new Triple::EnvironmentType members at the end to avoid breaking backwards ABI compatibility. Gentoo is planning to introduce a `*t64` suffix for triples that will be used by 32-bit platforms that use 64-bit `time_t`. Add support for parsing and accepting these triples, and while at it make clang automatically enable the necessary glibc feature macros when this suffix is used.
This commit is contained in:
parent
19c571a631
commit
21ed37e3e7
@ -311,7 +311,9 @@ ARMTargetInfo::ARMTargetInfo(const llvm::Triple &Triple,
|
||||
switch (Triple.getEnvironment()) {
|
||||
case llvm::Triple::Android:
|
||||
case llvm::Triple::GNUEABI:
|
||||
case llvm::Triple::GNUEABIT64:
|
||||
case llvm::Triple::GNUEABIHF:
|
||||
case llvm::Triple::GNUEABIHFT64:
|
||||
case llvm::Triple::MuslEABI:
|
||||
case llvm::Triple::MuslEABIHF:
|
||||
case llvm::Triple::OpenHOS:
|
||||
|
@ -337,6 +337,10 @@ protected:
|
||||
Builder.defineMacro("_GNU_SOURCE");
|
||||
if (this->HasFloat128)
|
||||
Builder.defineMacro("__FLOAT128__");
|
||||
if (Triple.isTime64ABI()) {
|
||||
Builder.defineMacro("_FILE_OFFSET_BITS", "64");
|
||||
Builder.defineMacro("_TIME_BITS", "64");
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -177,10 +177,7 @@ createTargetCodeGenInfo(CodeGenModule &CGM) {
|
||||
else if (ABIStr == "aapcs16")
|
||||
Kind = ARMABIKind::AAPCS16_VFP;
|
||||
else if (CodeGenOpts.FloatABI == "hard" ||
|
||||
(CodeGenOpts.FloatABI != "soft" &&
|
||||
(Triple.getEnvironment() == llvm::Triple::GNUEABIHF ||
|
||||
Triple.getEnvironment() == llvm::Triple::MuslEABIHF ||
|
||||
Triple.getEnvironment() == llvm::Triple::EABIHF)))
|
||||
(CodeGenOpts.FloatABI != "soft" && Triple.isHardFloatABI()))
|
||||
Kind = ARMABIKind::AAPCS_VFP;
|
||||
|
||||
return createARMTargetCodeGenInfo(CGM, Kind);
|
||||
|
@ -35,7 +35,9 @@ public:
|
||||
case llvm::Triple::EABI:
|
||||
case llvm::Triple::EABIHF:
|
||||
case llvm::Triple::GNUEABI:
|
||||
case llvm::Triple::GNUEABIT64:
|
||||
case llvm::Triple::GNUEABIHF:
|
||||
case llvm::Triple::GNUEABIHFT64:
|
||||
case llvm::Triple::MuslEABI:
|
||||
case llvm::Triple::MuslEABIHF:
|
||||
return true;
|
||||
@ -48,6 +50,7 @@ public:
|
||||
switch (getTarget().getTriple().getEnvironment()) {
|
||||
case llvm::Triple::EABIHF:
|
||||
case llvm::Triple::GNUEABIHF:
|
||||
case llvm::Triple::GNUEABIHFT64:
|
||||
case llvm::Triple::MuslEABIHF:
|
||||
return true;
|
||||
default:
|
||||
|
@ -602,7 +602,8 @@ static llvm::Triple computeTargetTriple(const Driver &D,
|
||||
if (A->getOption().matches(options::OPT_m64) ||
|
||||
A->getOption().matches(options::OPT_maix64)) {
|
||||
AT = Target.get64BitArchVariant().getArch();
|
||||
if (Target.getEnvironment() == llvm::Triple::GNUX32)
|
||||
if (Target.getEnvironment() == llvm::Triple::GNUX32 ||
|
||||
Target.getEnvironment() == llvm::Triple::GNUT64)
|
||||
Target.setEnvironment(llvm::Triple::GNU);
|
||||
else if (Target.getEnvironment() == llvm::Triple::MuslX32)
|
||||
Target.setEnvironment(llvm::Triple::Musl);
|
||||
@ -665,11 +666,13 @@ static llvm::Triple computeTargetTriple(const Driver &D,
|
||||
} else if (ABIName == "n32") {
|
||||
Target = Target.get64BitArchVariant();
|
||||
if (Target.getEnvironment() == llvm::Triple::GNU ||
|
||||
Target.getEnvironment() == llvm::Triple::GNUT64 ||
|
||||
Target.getEnvironment() == llvm::Triple::GNUABI64)
|
||||
Target.setEnvironment(llvm::Triple::GNUABIN32);
|
||||
} else if (ABIName == "64") {
|
||||
Target = Target.get64BitArchVariant();
|
||||
if (Target.getEnvironment() == llvm::Triple::GNU ||
|
||||
Target.getEnvironment() == llvm::Triple::GNUT64 ||
|
||||
Target.getEnvironment() == llvm::Triple::GNUABIN32)
|
||||
Target.setEnvironment(llvm::Triple::GNUABI64);
|
||||
}
|
||||
|
@ -327,6 +327,11 @@ void arm::setFloatABIInTriple(const Driver &D, const ArgList &Args,
|
||||
Triple.setEnvironment(isHardFloat ? llvm::Triple::GNUEABIHF
|
||||
: llvm::Triple::GNUEABI);
|
||||
break;
|
||||
case llvm::Triple::GNUEABIT64:
|
||||
case llvm::Triple::GNUEABIHFT64:
|
||||
Triple.setEnvironment(isHardFloat ? llvm::Triple::GNUEABIHFT64
|
||||
: llvm::Triple::GNUEABIT64);
|
||||
break;
|
||||
case llvm::Triple::EABI:
|
||||
case llvm::Triple::EABIHF:
|
||||
Triple.setEnvironment(isHardFloat ? llvm::Triple::EABIHF
|
||||
@ -414,10 +419,12 @@ arm::FloatABI arm::getDefaultFloatABI(const llvm::Triple &Triple) {
|
||||
return FloatABI::Soft;
|
||||
switch (Triple.getEnvironment()) {
|
||||
case llvm::Triple::GNUEABIHF:
|
||||
case llvm::Triple::GNUEABIHFT64:
|
||||
case llvm::Triple::MuslEABIHF:
|
||||
case llvm::Triple::EABIHF:
|
||||
return FloatABI::Hard;
|
||||
case llvm::Triple::GNUEABI:
|
||||
case llvm::Triple::GNUEABIT64:
|
||||
case llvm::Triple::MuslEABI:
|
||||
case llvm::Triple::EABI:
|
||||
// EABI is always AAPCS, and if it was not marked 'hard', it's softfp
|
||||
|
@ -2694,6 +2694,7 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
|
||||
case llvm::Triple::thumb:
|
||||
LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
|
||||
if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF ||
|
||||
TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHFT64 ||
|
||||
TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF ||
|
||||
TargetTriple.getEnvironment() == llvm::Triple::EABIHF) {
|
||||
TripleAliases.append(begin(ARMHFTriples), end(ARMHFTriples));
|
||||
@ -2705,6 +2706,7 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
|
||||
case llvm::Triple::thumbeb:
|
||||
LibDirs.append(begin(ARMebLibDirs), end(ARMebLibDirs));
|
||||
if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF ||
|
||||
TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHFT64 ||
|
||||
TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF ||
|
||||
TargetTriple.getEnvironment() == llvm::Triple::EABIHF) {
|
||||
TripleAliases.append(begin(ARMebHFTriples), end(ARMebHFTriples));
|
||||
|
@ -508,6 +508,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
case llvm::Triple::thumbeb: {
|
||||
const bool HF =
|
||||
Triple.getEnvironment() == llvm::Triple::GNUEABIHF ||
|
||||
Triple.getEnvironment() == llvm::Triple::GNUEABIHFT64 ||
|
||||
tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard;
|
||||
|
||||
LibDir = "lib";
|
||||
|
12
clang/test/Preprocessor/time64.c
Normal file
12
clang/test/Preprocessor/time64.c
Normal file
@ -0,0 +1,12 @@
|
||||
// RUN: %clang_cc1 -E -dM -triple=i686-pc-linux-gnu /dev/null | FileCheck -match-full-lines -check-prefix TIME32 %s
|
||||
// RUN: %clang_cc1 -E -dM -triple=i686-pc-linux-gnut64 /dev/null | FileCheck -match-full-lines -check-prefix TIME64 %s
|
||||
// RUN: %clang_cc1 -E -dM -triple=armv5tel-softfloat-linux-gnueabi /dev/null | FileCheck -match-full-lines -check-prefix TIME32 %s
|
||||
// RUN: %clang_cc1 -E -dM -triple=armv5tel-softfloat-linux-gnueabit64 /dev/null | FileCheck -match-full-lines -check-prefix TIME64 %s
|
||||
// RUN: %clang_cc1 -E -dM -triple=armv7a-unknown-linux-gnueabihf /dev/null | FileCheck -match-full-lines -check-prefix TIME32 %s
|
||||
// RUN: %clang_cc1 -E -dM -triple=armv7a-unknown-linux-gnueabihft64 /dev/null | FileCheck -match-full-lines -check-prefix TIME64 %s
|
||||
//
|
||||
// TIME32-NOT:#define _FILE_OFFSET_BITS 64
|
||||
// TIME32-NOT:#define _TIME_BITS 64
|
||||
//
|
||||
// TIME64:#define _FILE_OFFSET_BITS 64
|
||||
// TIME64:#define _TIME_BITS 64
|
@ -294,7 +294,11 @@ public:
|
||||
|
||||
PAuthTest,
|
||||
|
||||
LastEnvironmentType = PAuthTest
|
||||
GNUT64,
|
||||
GNUEABIT64,
|
||||
GNUEABIHFT64,
|
||||
|
||||
LastEnvironmentType = GNUEABIHFT64
|
||||
};
|
||||
enum ObjectFormatType {
|
||||
UnknownObjectFormat,
|
||||
@ -605,11 +609,12 @@ public:
|
||||
|
||||
bool isGNUEnvironment() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
return Env == Triple::GNU || Env == Triple::GNUABIN32 ||
|
||||
Env == Triple::GNUABI64 || Env == Triple::GNUEABI ||
|
||||
Env == Triple::GNUEABIHF || Env == Triple::GNUF32 ||
|
||||
Env == Triple::GNUF64 || Env == Triple::GNUSF ||
|
||||
Env == Triple::GNUX32;
|
||||
return Env == Triple::GNU || Env == Triple::GNUT64 ||
|
||||
Env == Triple::GNUABIN32 || Env == Triple::GNUABI64 ||
|
||||
Env == Triple::GNUEABI || Env == Triple::GNUEABIT64 ||
|
||||
Env == Triple::GNUEABIHF || Env == Triple::GNUEABIHFT64 ||
|
||||
Env == Triple::GNUF32 || Env == Triple::GNUF64 ||
|
||||
Env == Triple::GNUSF || Env == Triple::GNUX32;
|
||||
}
|
||||
|
||||
/// Tests whether the OS is Haiku.
|
||||
@ -866,9 +871,11 @@ public:
|
||||
return (isARM() || isThumb()) &&
|
||||
(getEnvironment() == Triple::EABI ||
|
||||
getEnvironment() == Triple::GNUEABI ||
|
||||
getEnvironment() == Triple::GNUEABIT64 ||
|
||||
getEnvironment() == Triple::MuslEABI ||
|
||||
getEnvironment() == Triple::EABIHF ||
|
||||
getEnvironment() == Triple::GNUEABIHF ||
|
||||
getEnvironment() == Triple::GNUEABIHFT64 ||
|
||||
getEnvironment() == Triple::OpenHOS ||
|
||||
getEnvironment() == Triple::MuslEABIHF || isAndroid()) &&
|
||||
isOSBinFormatELF();
|
||||
@ -1046,6 +1053,22 @@ public:
|
||||
return getArch() == Triple::bpfel || getArch() == Triple::bpfeb;
|
||||
}
|
||||
|
||||
/// Tests if the target forces 64-bit time_t on a 32-bit architecture.
|
||||
bool isTime64ABI() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
return Env == Triple::GNUT64 || Env == Triple::GNUEABIT64 ||
|
||||
Env == Triple::GNUEABIHFT64;
|
||||
}
|
||||
|
||||
/// Tests if the target forces hardfloat.
|
||||
bool isHardFloatABI() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
return Env == llvm::Triple::GNUEABIHF ||
|
||||
Env == llvm::Triple::GNUEABIHFT64 ||
|
||||
Env == llvm::Triple::MuslEABIHF ||
|
||||
Env == llvm::Triple::EABIHF;
|
||||
}
|
||||
|
||||
/// Tests whether the target supports comdat
|
||||
bool supportsCOMDAT() const {
|
||||
return !(isOSBinFormatMachO() || isOSBinFormatXCOFF() ||
|
||||
|
@ -325,7 +325,9 @@ public:
|
||||
}
|
||||
bool isTargetGNUAEABI() const {
|
||||
return (TargetTriple.getEnvironment() == Triple::GNUEABI ||
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIHF) &&
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIT64 ||
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIHFT64) &&
|
||||
!isTargetDarwin() && !isTargetWindows();
|
||||
}
|
||||
bool isTargetMuslAEABI() const {
|
||||
|
@ -241,7 +241,9 @@ ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, const Triple &TT,
|
||||
Options.EABIVersion == EABI::Unknown) {
|
||||
// musl is compatible with glibc with regard to EABI version
|
||||
if ((TargetTriple.getEnvironment() == Triple::GNUEABI ||
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIT64 ||
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIHFT64 ||
|
||||
TargetTriple.getEnvironment() == Triple::MuslEABI ||
|
||||
TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
|
||||
TargetTriple.getEnvironment() == Triple::OpenHOS) &&
|
||||
|
@ -64,6 +64,7 @@ public:
|
||||
|
||||
bool isTargetHardFloat() const {
|
||||
return TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
|
||||
TargetTriple.getEnvironment() == Triple::GNUEABIHFT64 ||
|
||||
TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
|
||||
TargetTriple.getEnvironment() == Triple::EABIHF ||
|
||||
(TargetTriple.isOSBinFormatMachO() &&
|
||||
|
@ -554,7 +554,9 @@ StringRef ARM::computeDefaultTargetABI(const Triple &TT, StringRef CPU) {
|
||||
switch (TT.getEnvironment()) {
|
||||
case Triple::Android:
|
||||
case Triple::GNUEABI:
|
||||
case Triple::GNUEABIT64:
|
||||
case Triple::GNUEABIHF:
|
||||
case Triple::GNUEABIHFT64:
|
||||
case Triple::MuslEABI:
|
||||
case Triple::MuslEABIHF:
|
||||
case Triple::OpenHOS:
|
||||
@ -635,6 +637,7 @@ StringRef ARM::getARMCPUForArch(const llvm::Triple &Triple, StringRef MArch) {
|
||||
switch (Triple.getEnvironment()) {
|
||||
case llvm::Triple::EABIHF:
|
||||
case llvm::Triple::GNUEABIHF:
|
||||
case llvm::Triple::GNUEABIHFT64:
|
||||
case llvm::Triple::MuslEABIHF:
|
||||
return "arm1176jzf-s";
|
||||
default:
|
||||
|
@ -317,10 +317,13 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {
|
||||
case EABI: return "eabi";
|
||||
case EABIHF: return "eabihf";
|
||||
case GNU: return "gnu";
|
||||
case GNUT64: return "gnut64";
|
||||
case GNUABI64: return "gnuabi64";
|
||||
case GNUABIN32: return "gnuabin32";
|
||||
case GNUEABI: return "gnueabi";
|
||||
case GNUEABIT64: return "gnueabit64";
|
||||
case GNUEABIHF: return "gnueabihf";
|
||||
case GNUEABIHFT64: return "gnueabihft64";
|
||||
case GNUF32: return "gnuf32";
|
||||
case GNUF64: return "gnuf64";
|
||||
case GNUSF: return "gnusf";
|
||||
@ -693,7 +696,9 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
|
||||
.StartsWith("eabi", Triple::EABI)
|
||||
.StartsWith("gnuabin32", Triple::GNUABIN32)
|
||||
.StartsWith("gnuabi64", Triple::GNUABI64)
|
||||
.StartsWith("gnueabihft64", Triple::GNUEABIHFT64)
|
||||
.StartsWith("gnueabihf", Triple::GNUEABIHF)
|
||||
.StartsWith("gnueabit64", Triple::GNUEABIT64)
|
||||
.StartsWith("gnueabi", Triple::GNUEABI)
|
||||
.StartsWith("gnuf32", Triple::GNUF32)
|
||||
.StartsWith("gnuf64", Triple::GNUF64)
|
||||
@ -701,6 +706,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
|
||||
.StartsWith("gnux32", Triple::GNUX32)
|
||||
.StartsWith("gnu_ilp32", Triple::GNUILP32)
|
||||
.StartsWith("code16", Triple::CODE16)
|
||||
.StartsWith("gnut64", Triple::GNUT64)
|
||||
.StartsWith("gnu", Triple::GNU)
|
||||
.StartsWith("android", Triple::Android)
|
||||
.StartsWith("musleabihf", Triple::MuslEABIHF)
|
||||
|
@ -93,6 +93,13 @@ TEST(TripleTest, ParsedIDs) {
|
||||
EXPECT_EQ(Triple::Hurd, T.getOS());
|
||||
EXPECT_EQ(Triple::GNU, T.getEnvironment());
|
||||
|
||||
T = Triple("i686-pc-linux-gnu");
|
||||
EXPECT_EQ(Triple::x86, T.getArch());
|
||||
EXPECT_EQ(Triple::PC, T.getVendor());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::GNU, T.getEnvironment());
|
||||
EXPECT_FALSE(T.isTime64ABI());
|
||||
|
||||
T = Triple("x86_64-pc-linux-gnu");
|
||||
EXPECT_EQ(Triple::x86_64, T.getArch());
|
||||
EXPECT_EQ(Triple::PC, T.getVendor());
|
||||
@ -187,24 +194,52 @@ TEST(TripleTest, ParsedIDs) {
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::UnknownOS, T.getOS());
|
||||
EXPECT_EQ(Triple::EABI, T.getEnvironment());
|
||||
EXPECT_FALSE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("arm-none-none-eabihf");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::UnknownOS, T.getOS());
|
||||
EXPECT_EQ(Triple::EABIHF, T.getEnvironment());
|
||||
EXPECT_TRUE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("arm-none-linux-musleabi");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::MuslEABI, T.getEnvironment());
|
||||
EXPECT_FALSE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("arm-none-linux-musleabihf");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::MuslEABIHF, T.getEnvironment());
|
||||
EXPECT_TRUE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("armv6hl-none-linux-gnueabi");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::GNUEABI, T.getEnvironment());
|
||||
EXPECT_FALSE(T.isTime64ABI());
|
||||
EXPECT_FALSE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("armv7hl-none-linux-gnueabi");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::GNUEABI, T.getEnvironment());
|
||||
EXPECT_FALSE(T.isTime64ABI());
|
||||
EXPECT_FALSE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("armv7hl-none-linux-gnueabihf");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::GNUEABIHF, T.getEnvironment());
|
||||
EXPECT_FALSE(T.isTime64ABI());
|
||||
EXPECT_TRUE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("amdil-unknown-unknown");
|
||||
EXPECT_EQ(Triple::amdil, T.getArch());
|
||||
@ -1175,6 +1210,29 @@ TEST(TripleTest, ParsedIDs) {
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::PAuthTest, T.getEnvironment());
|
||||
|
||||
// Gentoo time64 triples
|
||||
T = Triple("i686-pc-linux-gnut64");
|
||||
EXPECT_EQ(Triple::x86, T.getArch());
|
||||
EXPECT_EQ(Triple::PC, T.getVendor());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::GNUT64, T.getEnvironment());
|
||||
EXPECT_TRUE(T.isTime64ABI());
|
||||
|
||||
T = Triple("armv5tel-softfloat-linux-gnueabit64");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::GNUEABIT64, T.getEnvironment());
|
||||
EXPECT_TRUE(T.isTime64ABI());
|
||||
|
||||
T = Triple("armv7a-unknown-linux-gnueabihft64");
|
||||
EXPECT_EQ(Triple::arm, T.getArch());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::Linux, T.getOS());
|
||||
EXPECT_EQ(Triple::GNUEABIHFT64, T.getEnvironment());
|
||||
EXPECT_TRUE(T.isTime64ABI());
|
||||
EXPECT_TRUE(T.isHardFloatABI());
|
||||
|
||||
T = Triple("huh");
|
||||
EXPECT_EQ(Triple::UnknownArch, T.getArch());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user