EricWF created this revision. EricWF added reviewers: fowles, bkramer, sdesmalen. Herald added a project: clang.
The current version of the comparator does not introduce a strict weak ordering. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D78323 Files: clang/utils/TableGen/SveEmitter.cpp Index: clang/utils/TableGen/SveEmitter.cpp =================================================================== --- clang/utils/TableGen/SveEmitter.cpp +++ clang/utils/TableGen/SveEmitter.cpp @@ -33,6 +33,7 @@ #include <sstream> #include <set> #include <cctype> +#include <tuple> using namespace llvm; @@ -909,9 +910,10 @@ std::stable_sort( Defs.begin(), Defs.end(), [](const std::unique_ptr<Intrinsic> &A, const std::unique_ptr<Intrinsic> &B) { - return A->getGuard() < B->getGuard() || - (unsigned)A->getClassKind() < (unsigned)B->getClassKind() || - A->getName() < B->getName(); + auto ToTuple = [](const std::unique_ptr<Intrinsic> &I) { + return std::make_tuple(I->getGuard(), (unsigned)I->getClassKind(), I->getName()); + }; + return ToTuple(A) < ToTuple(B); }); StringRef InGuard = "";
Index: clang/utils/TableGen/SveEmitter.cpp =================================================================== --- clang/utils/TableGen/SveEmitter.cpp +++ clang/utils/TableGen/SveEmitter.cpp @@ -33,6 +33,7 @@ #include <sstream> #include <set> #include <cctype> +#include <tuple> using namespace llvm; @@ -909,9 +910,10 @@ std::stable_sort( Defs.begin(), Defs.end(), [](const std::unique_ptr<Intrinsic> &A, const std::unique_ptr<Intrinsic> &B) { - return A->getGuard() < B->getGuard() || - (unsigned)A->getClassKind() < (unsigned)B->getClassKind() || - A->getName() < B->getName(); + auto ToTuple = [](const std::unique_ptr<Intrinsic> &I) { + return std::make_tuple(I->getGuard(), (unsigned)I->getClassKind(), I->getName()); + }; + return ToTuple(A) < ToTuple(B); }); StringRef InGuard = "";
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits