AsmMatcher: Ensure classes are totally ordered, so we can std::sort them reliably.

llvm-svn: 104806
This commit is contained in:
Daniel Dunbar 2010-05-27 05:31:32 +00:00
parent ebdc772457
commit 97ac3afac2
1 changed files with 10 additions and 1 deletions

View File

@ -388,6 +388,9 @@ public:
/// operator< - Compare two classes.
bool operator<(const ClassInfo &RHS) const {
if (this == &RHS)
return false;
// Unrelated classes can be ordered by kind.
if (!isRelatedTo(RHS))
return Kind < RHS.Kind;
@ -403,7 +406,13 @@ public:
default:
// This class preceeds the RHS if it is a proper subset of the RHS.
return this != &RHS && isSubsetOf(RHS);
if (isSubsetOf(RHS))
return true;
if (RHS.isSubsetOf(*this))
return false;
// Otherwise, order by name to ensure we have a total ordering.
return ValueName < RHS.ValueName;
}
}
};