diff --git a/llvm/unittests/ADT/TripleTest.cpp b/llvm/unittests/ADT/TripleTest.cpp index ffce07ba2b125f..ff6c2dde4b161d 100644 --- a/llvm/unittests/ADT/TripleTest.cpp +++ b/llvm/unittests/ADT/TripleTest.cpp @@ -1264,6 +1264,14 @@ TEST(TripleTest, getOSVersion) { EXPECT_EQ((unsigned)0, Minor); EXPECT_EQ((unsigned)0, Micro); + // For darwin triples on macOS 11, only compare the major version. + T = Triple("x86_64-apple-darwin20.2"); + EXPECT_TRUE(T.isMacOSX()); + T.getMacOSXVersion(Major, Minor, Micro); + EXPECT_EQ((unsigned)11, Major); + EXPECT_EQ((unsigned)0, Minor); + EXPECT_EQ((unsigned)0, Micro); + T = Triple("armv7-apple-ios"); EXPECT_FALSE(T.isMacOSX()); EXPECT_TRUE(T.isiOS()); diff --git a/llvm/unittests/Support/Host.cpp b/llvm/unittests/Support/Host.cpp index 8029bb5830fc62..b452048361db6e 100644 --- a/llvm/unittests/Support/Host.cpp +++ b/llvm/unittests/Support/Host.cpp @@ -348,9 +348,15 @@ TEST_F(HostTest, getMacOSHostVersion) { unsigned HostMajor, HostMinor, HostMicro; ASSERT_EQ(HostTriple.getMacOSXVersion(HostMajor, HostMinor, HostMicro), true); - // Don't compare the 'Micro' version, as it's always '0' for the 'Darwin' - // triples. - ASSERT_EQ(std::tie(SystemMajor, SystemMinor), std::tie(HostMajor, HostMinor)); + if (SystemMajor > 10) { + // Don't compare the 'Minor' and 'Micro' versions, as they're always '0' for + // the 'Darwin' triples on 11.x. + ASSERT_EQ(SystemMajor, HostMajor); + } else { + // Don't compare the 'Micro' version, as it's always '0' for the 'Darwin' + // triples. + ASSERT_EQ(std::tie(SystemMajor, SystemMinor), std::tie(HostMajor, HostMinor)); + } } #endif