[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