In #155245, we implemented an optimization to std::map and std::set search operations. That optimization took advantage of something that is guaranteed by the Standard, namely that the comparator provided to the associative container is a valid strict weak ordering. Sadly, some code in the wild did not satisfy this requirement, such as Boost.ICL: boostorg/icl#51 Since this can have extremely tricky runtime consequences, this patch introduces a temporary escape hatch for the LLVM 22 release that allows reverting to the previous behavior. It also explicitly calls out the change in the release notes, adds some regression tests and adds debug mode support for catching some of these invalid predicates. Fixes #183189
libc++ Documentation ==================== The libc++ documentation is written using the Sphinx documentation generator. It is currently tested with Sphinx 1.1.3. To build the documents into html configure libc++ with the following cmake options: * -DLLVM_ENABLE_SPHINX=ON * -DLIBCXX_INCLUDE_DOCS=ON After configuring libc++ with these options the make rule `docs-libcxx-html` should be available. The documentation in this directory is published at https://libcxx.llvm.org. It is kept up-to-date by a build bot: https://lab.llvm.org/buildbot/#/builders/publish-sphinx-docs. If you notice that the documentation is not updating anymore, please contact one of the maintainers.