diff --git a/llvm/lib/Support/Triple.cpp b/llvm/lib/Support/Triple.cpp index b27feceb93d9..0a10a48557e4 100644 --- a/llvm/lib/Support/Triple.cpp +++ b/llvm/lib/Support/Triple.cpp @@ -279,9 +279,10 @@ static Triple::ArchType parseARMArch(StringRef ArchName) { .Cases("v3", "v3m", isThumb ? Triple::UnknownArch : arch) .Cases("v4", "v4t", arch) .Cases("v5", "v5e", "v5t", "v5te", "v5tej", arch) - .Cases("v6", "v6j", "v6k", "v6m", "v6sm", arch) + .Cases("v6", "v6hl", "v6j", "v6k", arch) + .Cases("v6m", "v6sm", arch) .Cases("v6t2", "v6z", "v6zk", arch) - .Cases("v7", "v7a", "v7em", "v7l", arch) + .Cases("v7", "v7a", "v7em", "v7hl", "v7l", arch) .Cases("v7m", "v7r", "v7s", arch) .Cases("v8", "v8a", arch) .Cases("v8.1", "v8.1a", arch) diff --git a/llvm/unittests/ADT/TripleTest.cpp b/llvm/unittests/ADT/TripleTest.cpp index 75d62e6fccea..960503742218 100644 --- a/llvm/unittests/ADT/TripleTest.cpp +++ b/llvm/unittests/ADT/TripleTest.cpp @@ -129,6 +129,18 @@ TEST(TripleTest, ParsedIDs) { EXPECT_EQ(Triple::UnknownOS, T.getOS()); EXPECT_EQ(Triple::EABI, T.getEnvironment()); + 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()); + + 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()); + T = Triple("amdil-unknown-unknown"); EXPECT_EQ(Triple::amdil, T.getArch()); EXPECT_EQ(Triple::UnknownVendor, T.getVendor());