[libcxx-commits] [PATCH] D113413: Add introsort to avoid O(n^2) behavior and a benchmark for adversarial quick sort input.

Arthur O'Dwyer via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Wed Nov 17 19:10:12 PST 2021


Quuxplusone added inline comments.


================
Comment at: libcxx/include/__algorithm/sort.h:477
+  difference_type __depth_limit = 2 * __log2i(__last - __first);
+  __introsort(__first, __last, __comp, __depth_limit);
+}
----------------
This line needs to use `_VSTD::__introsort` (ADL-proofing — hmm, how did this pass `robust_against_adl.pass.cpp`? I should investigate).
Also, it needs to use `_Comp_ref<_Compare>` instead of making a copy of `__comp`.
@nilayvaish, please hunt through the rest of this patch to see if there are any other similar cases. (I did not look.)

I will investigate adding a new test along the lines of `algorithms/robust_*.cpp` to verify that we never accidentally copy comparators or predicates.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113413/new/

https://reviews.llvm.org/D113413



More information about the libcxx-commits mailing list