[all-commits] [llvm/llvm-project] 7961fa: [libc++] Fix uninitialized algorithms when using u...

Louis Dionne via All-commits all-commits at lists.llvm.org
Thu Oct 19 23:22:24 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7961fa36baa31234a26e5028492688dbbf79cc8e
      https://github.com/llvm/llvm-project/commit/7961fa36baa31234a26e5028492688dbbf79cc8e
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2023-10-19 (Thu, 19 Oct 2023)

  Changed paths:
    M libcxx/include/__memory/ranges_uninitialized_algorithms.h
    M libcxx/include/__memory/uninitialized_algorithms.h
    A libcxx/test/std/utilities/memory/specialized.algorithms/overload_compare_iterator.h
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy_n.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move_n.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/uninitialized_move.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/uninitialized_move_n.pass.cpp

  Log Message:
  -----------
  [libc++] Fix uninitialized algorithms when using unconstrained comparison operators (#69373)

If an iterator passed to std::uninitialized_copy & friends provided an
unconstrained comparison operator, we would trigger an ambiguous
overload resolution because we used to compare against
__unreachable_sentinel in our implementation.

This patch fixes that by only comparing the output iterator when it is
actually required, i.e. in the <ranges> versions of the algorithms.

Fixes #69334




More information about the All-commits mailing list