forked from OSchip/llvm-project
Add a unit test for ArchSpec matching to document how it behaves (and test it).
llvm-svn: 348440
This commit is contained in:
parent
3cd70b385d
commit
7b8a03751c
|
@ -1019,7 +1019,7 @@ bool ArchSpec::IsCompatibleMatch(const ArchSpec &rhs) const {
|
|||
return IsEqualTo(rhs, false);
|
||||
}
|
||||
|
||||
static bool isCompatibleEnvironment(llvm::Triple::EnvironmentType lhs,
|
||||
static bool IsCompatibleEnvironment(llvm::Triple::EnvironmentType lhs,
|
||||
llvm::Triple::EnvironmentType rhs) {
|
||||
if (lhs == rhs)
|
||||
return true;
|
||||
|
@ -1096,7 +1096,7 @@ bool ArchSpec::IsEqualTo(const ArchSpec &rhs, bool exact_match) const {
|
|||
const llvm::Triple::EnvironmentType rhs_triple_env =
|
||||
rhs_triple.getEnvironment();
|
||||
|
||||
if (!isCompatibleEnvironment(lhs_triple_env, rhs_triple_env))
|
||||
if (!IsCompatibleEnvironment(lhs_triple_env, rhs_triple_env))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -171,3 +171,53 @@ TEST(ArchSpecTest, MergeFromMachOUnknown) {
|
|||
A.MergeFrom(B);
|
||||
ASSERT_EQ(A.GetCore(), ArchSpec::eCore_uknownMach64);
|
||||
}
|
||||
|
||||
TEST(ArchSpecTest, Compatibility) {
|
||||
{
|
||||
ArchSpec A("x86_64-apple-macosx10.12");
|
||||
ArchSpec B("x86_64-apple-macosx10.12");
|
||||
ASSERT_TRUE(A.IsExactMatch(B));
|
||||
ASSERT_TRUE(A.IsCompatibleMatch(B));
|
||||
}
|
||||
{
|
||||
// The version information is auxiliary to support availablity but
|
||||
// doesn't affect compatibility.
|
||||
ArchSpec A("x86_64-apple-macosx10.11");
|
||||
ArchSpec B("x86_64-apple-macosx10.12");
|
||||
ASSERT_TRUE(A.IsExactMatch(B));
|
||||
ASSERT_TRUE(A.IsCompatibleMatch(B));
|
||||
}
|
||||
{
|
||||
ArchSpec A("x86_64-apple-macosx10.13");
|
||||
ArchSpec B("x86_64h-apple-macosx10.13");
|
||||
ASSERT_FALSE(A.IsExactMatch(B));
|
||||
ASSERT_TRUE(A.IsCompatibleMatch(B));
|
||||
}
|
||||
{
|
||||
ArchSpec A("x86_64-apple-macosx");
|
||||
ArchSpec B("x86_64-apple-ios-simulator");
|
||||
ASSERT_FALSE(A.IsExactMatch(B));
|
||||
ASSERT_FALSE(A.IsCompatibleMatch(B));
|
||||
}
|
||||
{
|
||||
ArchSpec A("x86_64-*-*");
|
||||
ArchSpec B("x86_64-apple-ios-simulator");
|
||||
ASSERT_FALSE(A.IsExactMatch(B));
|
||||
ASSERT_FALSE(A.IsCompatibleMatch(B));
|
||||
}
|
||||
{
|
||||
ArchSpec A("arm64-*-*");
|
||||
ArchSpec B("arm64-apple-ios");
|
||||
ASSERT_FALSE(A.IsExactMatch(B));
|
||||
// FIXME: This looks unintuitive and we should investigate whether
|
||||
// thi is the desired behavior.
|
||||
ASSERT_FALSE(A.IsCompatibleMatch(B));
|
||||
}
|
||||
{
|
||||
ArchSpec A("x86_64-*-*");
|
||||
ArchSpec B("x86_64-apple-ios-simulator");
|
||||
ASSERT_FALSE(A.IsExactMatch(B));
|
||||
// FIXME: See above, though the extra environment complicates things.
|
||||
ASSERT_FALSE(A.IsCompatibleMatch(B));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue