diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-05-27 05:31:32 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-05-27 05:31:32 +0000 |
commit | 368a4565034b907943f5c0173574eb47939b74bf (patch) | |
tree | 90ba782d0f15efed62e904f16af9597f3ab640b5 /utils/TableGen/AsmMatcherEmitter.cpp | |
parent | cdef41a6b4889a7e7143053b1806e9c737058b30 (diff) | |
download | llvm-368a4565034b907943f5c0173574eb47939b74bf.tar.gz llvm-368a4565034b907943f5c0173574eb47939b74bf.tar.bz2 llvm-368a4565034b907943f5c0173574eb47939b74bf.tar.xz |
AsmMatcher: Ensure classes are totally ordered, so we can std::sort them reliably.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104806 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/AsmMatcherEmitter.cpp')
-rw-r--r-- | utils/TableGen/AsmMatcherEmitter.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp index 783c6b5aae..4ba3df1176 100644 --- a/utils/TableGen/AsmMatcherEmitter.cpp +++ b/utils/TableGen/AsmMatcherEmitter.cpp @@ -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; } } }; |