diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h index 779bd9017d7f1..3a1a962003abf 100644 --- a/llvm/include/llvm/TargetParser/Triple.h +++ b/llvm/include/llvm/TargetParser/Triple.h @@ -268,6 +268,7 @@ class Triple { MuslF32, MuslSF, MuslX32, + LLVM, MSVC, Itanium, diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp index b271f29d265cf..faabaf18d8071 100644 --- a/llvm/lib/TargetParser/Triple.cpp +++ b/llvm/lib/TargetParser/Triple.cpp @@ -360,6 +360,8 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) { case OpenHOS: return "ohos"; case PAuthTest: return "pauthtest"; + case LLVM: + return "llvm"; } llvm_unreachable("Invalid EnvironmentType!"); @@ -740,6 +742,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { .StartsWith("opencl", Triple::OpenCL) .StartsWith("ohos", Triple::OpenHOS) .StartsWith("pauthtest", Triple::PAuthTest) + .StartsWith("llvm", Triple::LLVM) .Default(Triple::UnknownEnvironment); } diff --git a/llvm/unittests/TargetParser/TripleTest.cpp b/llvm/unittests/TargetParser/TripleTest.cpp index cb2fa95d431c6..87f9083fa344c 100644 --- a/llvm/unittests/TargetParser/TripleTest.cpp +++ b/llvm/unittests/TargetParser/TripleTest.cpp @@ -1341,6 +1341,12 @@ TEST(TripleTest, ParsedIDs) { EXPECT_TRUE(T.isTime64ABI()); EXPECT_TRUE(T.isHardFloatABI()); + T = Triple("x86_64-pc-linux-llvm"); + EXPECT_EQ(Triple::x86_64, T.getArch()); + EXPECT_EQ(Triple::PC, T.getVendor()); + EXPECT_EQ(Triple::Linux, T.getOS()); + EXPECT_EQ(Triple::LLVM, T.getEnvironment()); + T = Triple("huh"); EXPECT_EQ(Triple::UnknownArch, T.getArch()); }