[all-commits] [llvm/llvm-project] 0b10bb: [libc++] Move <__sso_allocator> out of include/ in...

Quuxplusone via All-commits all-commits at lists.llvm.org
Wed May 5 13:24:08 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0b10bb7ddd3c92465ef12d52e88614e6b4c5ef27
      https://github.com/llvm/llvm-project/commit/0b10bb7ddd3c92465ef12d52e88614e6b4c5ef27
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-05-05 (Wed, 05 May 2021)

  Changed paths:
    M libcxx/include/CMakeLists.txt
    R libcxx/include/__sso_allocator
    M libcxx/include/module.modulemap
    M libcxx/src/CMakeLists.txt
    A libcxx/src/include/sso_allocator.h
    M libcxx/src/locale.cpp

  Log Message:
  -----------
  [libc++] Move <__sso_allocator> out of include/ into src/. NFCI.

This allocator is not intended for libc++'s users to use;
it's strictly an implementation detail of `src/locale.cpp`.
So, move it to the `src/include/` directory.

Drive-by const-qualify its comparison operators.

For consistency with `__hidden_allocator` (defined in `src/thread.cpp`),
do *not* remove it from "libcxx/lib/libc++unexp.exp",
"libcxx/utils/symcheck-blacklists/linux_blacklist.txt", etc.

Differential Revision: https://reviews.llvm.org/D101293


  Commit: db9425cb060bd076fcdcbb5a37bfd992deff2086
      https://github.com/llvm/llvm-project/commit/db9425cb060bd076fcdcbb5a37bfd992deff2086
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-05-05 (Wed, 05 May 2021)

  Changed paths:
    M libcxx/include/string
    M libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp

  Log Message:
  -----------
  [libc++] [LIBCXX-DEBUG-FIXME] Fix an iterator-invalidation issue in string::assign.

This appears to be a bug in our string::assign: when assigning into
a longer string, from a shorter snippet of itself, we invalidate
iterators before doing the copy. We should invalidate them afterward.
Also drive-by improve the formatting of a function header.

Differential Revision: https://reviews.llvm.org/D101675


  Commit: 12dd9cdf1a8267e0c5db4f191f2598648de02619
      https://github.com/llvm/llvm-project/commit/12dd9cdf1a8267e0c5db4f191f2598648de02619
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-05-05 (Wed, 05 May 2021)

  Changed paths:
    M libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.factory.pass.cpp

  Log Message:
  -----------
  [libc++] [LIBCXX-DEBUG-FIXME] Iterating a string::iterator "off the end" is UB.

The range of char pointers [data, data+size] is a valid closed range,
but the range [begin, end) is valid only half-open.

Differential Revision: https://reviews.llvm.org/D101676


  Commit: 165ad89947e8ef6c08c80eb067d85b4fa9074904
      https://github.com/llvm/llvm-project/commit/165ad89947e8ef6c08c80eb067d85b4fa9074904
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-05-05 (Wed, 05 May 2021)

  Changed paths:
    M libcxx/docs/DesignDocs/DebugMode.rst
    M libcxx/test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp

  Log Message:
  -----------
  [libc++] [LIBCXX-DEBUG-FIXME] Our `__debug_less` breaks some complexity guarantees.

`__debug_less` ends up running the comparator up-to-twice per comparison,
because whenever `(x < y)` it goes on to verify that `!(y < x)`.
This breaks the strict "Complexity" guarantees of algorithms like
`inplace_merge`, which we test in the test suite. So, just skip the
complexity assertions in debug mode.

Differential Revision: https://reviews.llvm.org/D101677


  Commit: 9571b8f238f97bce01bcf3c84a4f87cfb1c00dbf
      https://github.com/llvm/llvm-project/commit/9571b8f238f97bce01bcf3c84a4f87cfb1c00dbf
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-05-05 (Wed, 05 May 2021)

  Changed paths:
    M libcxx/include/iterator
    M libcxx/test/std/iterators/iterator.primitives/iterator.operations/robust_against_adl.pass.cpp

  Log Message:
  -----------
  [libc++] [LIBCXX-DEBUG-FIXME] std::advance shouldn't use ADL `>=` on the _Distance type.

Convert to a primitive type first; then use primitive `>=` on that value.

Differential Revision: https://reviews.llvm.org/D101678


  Commit: 9ea2db2c513534aa63acc087b8dc744c37119d02
      https://github.com/llvm/llvm-project/commit/9ea2db2c513534aa63acc087b8dc744c37119d02
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-05-05 (Wed, 05 May 2021)

  Changed paths:
    M libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp
    M libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_rvalue.pass.cpp
    M libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp
    M libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp
    M libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp
    M libcxx/test/std/containers/unord/unord.set/insert_hint_rvalue.pass.cpp

  Log Message:
  -----------
  [libc++] [LIBCXX-DEBUG-FIXME] Stop using invalid iterators to insert into sets/maps.

This simply applies Howard's commit 4c80bfbd53caf consistently
across all the associative and unordered container tests.

"unord.set/insert_hint_const_lvalue.pass.cpp" failed with `-D_LIBCPP_DEBUG=1`
before this patch; it was the only one that incorrectly reused
invalid iterator `e`. The others already used valid iterators
(generally `c.end()`); I'm just making them all match the same pattern
of usage: "e, then r, then c.end() for the rest."

Differential Revision: https://reviews.llvm.org/D101679


Compare: https://github.com/llvm/llvm-project/compare/602f318cfdac...9ea2db2c5135


More information about the All-commits mailing list