[all-commits] [llvm/llvm-project] 551af7: [libc++][pstl] Implementation of parallel std::uni...

Michael G. Kazakov via All-commits all-commits at lists.llvm.org
Fri Sep 18 12:57:07 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 551af79c903169d0ee3ac35222a5af175424205d
      https://github.com/llvm/llvm-project/commit/551af79c903169d0ee3ac35222a5af175424205d
  Author: Michael G. Kazakov <mike.kazakov at gmail.com>
  Date:   2026-09-18 (Fri, 18 Sep 2026)

  Changed paths:
    M libcxx/docs/ReleaseNotes/24.rst
    M libcxx/docs/Status/Cxx17Papers.csv
    M libcxx/include/CMakeLists.txt
    M libcxx/include/__memory/pstl.h
    M libcxx/include/__pstl/backend_fwd.h
    M libcxx/include/__pstl/backends/default.h
    M libcxx/include/__pstl/backends/libdispatch.h
    M libcxx/include/__pstl/backends/serial.h
    M libcxx/include/__pstl/backends/std_thread.h
    M libcxx/include/__pstl/cpu_algos/for_each.h
    A libcxx/include/__pstl/cpu_algos/uninitialized_algorithms.h
    M libcxx/include/module.modulemap.in
    M libcxx/test/libcxx/algorithms/pstl.iterator-requirements.verify.cpp
    M libcxx/test/std/algorithms/pstl.exception_handling.pass.cpp
    A libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/pstl.uninitialized_copy.pass.cpp
    A libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/pstl.uninitialized_copy_n.pass.cpp
    A libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/pstl.uninitialized_move.pass.cpp
    A libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/pstl.uninitialized_move_n.pass.cpp

  Log Message:
  -----------
  [libc++][pstl] Implementation of parallel std::uninitialized_(copy|move)(_n) based on parallel __for_each (#223229)

This PR adds an implementation of parallel versions of
`std::uninitialized_copy`, `std::uninitialized_copy_n`,
`std::uninitialized_move` and `std::uninitialized_move_n`.

Implementations are mostly one-liners under the hood, but require
dealing with iterator ranges, hence `std::uninitialized_copy` and
`std::uninitialized_move` are implemented in `cpu_algos`.
`std::uninitialized_copy_n` and `std::uninitialized_move_n` are
implemented in the `default` backend.

Fixes #103640
Fixes #134592
Fixes #134593
Part of #99938



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list