@@ -295,7 +295,11 @@ class Triple {
295295
296296 PAuthTest,
297297
298- LastEnvironmentType = PAuthTest
298+ GNUT64,
299+ GNUEABIT64,
300+ GNUEABIHFT64,
301+
302+ LastEnvironmentType = GNUEABIHFT64
299303 };
300304 enum ObjectFormatType {
301305 UnknownObjectFormat,
@@ -606,11 +610,12 @@ class Triple {
606610
607611 bool isGNUEnvironment () const {
608612 EnvironmentType Env = getEnvironment ();
609- return Env == Triple::GNU || Env == Triple::GNUABIN32 ||
610- Env == Triple::GNUABI64 || Env == Triple::GNUEABI ||
611- Env == Triple::GNUEABIHF || Env == Triple::GNUF32 ||
612- Env == Triple::GNUF64 || Env == Triple::GNUSF ||
613- Env == Triple::GNUX32;
613+ return Env == Triple::GNU || Env == Triple::GNUT64 ||
614+ Env == Triple::GNUABIN32 || Env == Triple::GNUABI64 ||
615+ Env == Triple::GNUEABI || Env == Triple::GNUEABIT64 ||
616+ Env == Triple::GNUEABIHF || Env == Triple::GNUEABIHFT64 ||
617+ Env == Triple::GNUF32 || Env == Triple::GNUF64 ||
618+ Env == Triple::GNUSF || Env == Triple::GNUX32;
614619 }
615620
616621 // / Tests whether the OS is Haiku.
@@ -867,9 +872,11 @@ class Triple {
867872 return (isARM () || isThumb ()) &&
868873 (getEnvironment () == Triple::EABI ||
869874 getEnvironment () == Triple::GNUEABI ||
875+ getEnvironment () == Triple::GNUEABIT64 ||
870876 getEnvironment () == Triple::MuslEABI ||
871877 getEnvironment () == Triple::EABIHF ||
872878 getEnvironment () == Triple::GNUEABIHF ||
879+ getEnvironment () == Triple::GNUEABIHFT64 ||
873880 getEnvironment () == Triple::OpenHOS ||
874881 getEnvironment () == Triple::MuslEABIHF || isAndroid ()) &&
875882 isOSBinFormatELF ();
@@ -1047,6 +1054,22 @@ class Triple {
10471054 return getArch () == Triple::bpfel || getArch () == Triple::bpfeb;
10481055 }
10491056
1057+ // / Tests if the target forces 64-bit time_t on a 32-bit architecture.
1058+ bool isTime64ABI () const {
1059+ EnvironmentType Env = getEnvironment ();
1060+ return Env == Triple::GNUT64 || Env == Triple::GNUEABIT64 ||
1061+ Env == Triple::GNUEABIHFT64;
1062+ }
1063+
1064+ // / Tests if the target forces hardfloat.
1065+ bool isHardFloatABI () const {
1066+ EnvironmentType Env = getEnvironment ();
1067+ return Env == llvm::Triple::GNUEABIHF ||
1068+ Env == llvm::Triple::GNUEABIHFT64 ||
1069+ Env == llvm::Triple::MuslEABIHF ||
1070+ Env == llvm::Triple::EABIHF;
1071+ }
1072+
10501073 // / Tests whether the target supports comdat
10511074 bool supportsCOMDAT () const {
10521075 return !(isOSBinFormatMachO () || isOSBinFormatXCOFF () ||
0 commit comments