[PATCH] D157958: [TextAPI] Make sortTargetValues strict weak ordering compliant
Danila Kutenin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 15 02:30:51 PDT 2023
danlark created this revision.
danlark added reviewers: ributzka, cishida.
Herald added a project: All.
danlark requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Second sorting was not following strict weak ordering as it
does not follow transitivity of equivalence property.
If you build llvm with libcxx at head as a standard library with -D_LIBCPP_DEBUG_STRICT_WEAK_ORDERING_CHECK and -D_LIBCPP_ENABLE_DEBUG_MODE, then tests like llvm/test/tools/llvm-readtapi/compare-right-single-inline.test.test will fail
I don't have commit rights. Danila Kutenin kudanila at yandex.ru
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D157958
Files:
llvm/tools/llvm-readtapi/DiffEngine.cpp
Index: llvm/tools/llvm-readtapi/DiffEngine.cpp
===================================================================
--- llvm/tools/llvm-readtapi/DiffEngine.cpp
+++ llvm/tools/llvm-readtapi/DiffEngine.cpp
@@ -447,11 +447,11 @@
template <typename T> void sortTargetValues(std::vector<T> &TargValues) {
llvm::stable_sort(TargValues, [](const auto &ValA, const auto &ValB) {
+ if (ValA.getOrder() == ValB.getOrder()) {
+ return ValA.getVal() < ValB.getVal();
+ }
return ValA.getOrder() < ValB.getOrder();
});
- llvm::stable_sort(TargValues, [](const auto &ValA, const auto &ValB) {
- return ValA.getOrder() == ValB.getOrder() && ValA.getVal() < ValB.getVal();
- });
}
template <typename T>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D157958.550223.patch
Type: text/x-patch
Size: 719 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230815/fe663839/attachment.bin>
More information about the llvm-commits
mailing list