Skip to content

Commit 2685869

Browse files
authored
Merge 2025-06 LWG Motion 28
P3111R8 Atomic Reduction Operations
2 parents 2029159 + 8b989b1 commit 2685869

File tree

4 files changed

+605
-7
lines changed

4 files changed

+605
-7
lines changed

source/algorithms.tex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,8 @@
339339
A standard library function is \defn{vectorization-unsafe}
340340
if it is specified to synchronize with another function invocation, or
341341
another function invocation is specified to synchronize with it,
342-
and if it is not a memory allocation or deallocation function.
342+
and if it is not a memory allocation or deallocation function
343+
or lock-free atomic modify-write operation\iref{atomics.order}.
343344
\begin{note}
344345
Implementations must ensure that internal synchronization
345346
inside standard library functions does not prevent forward progress

source/basic.tex

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6919,7 +6919,8 @@
69196919
\item invoke the function \tcode{std::this_thread::yield}\iref{thread.thread.this},
69206920
\item make a call to a library I/O function,
69216921
\item perform an access through a volatile glvalue,
6922-
\item perform a synchronization operation or an atomic operation, or
6922+
\item perform an atomic or synchronization operation
6923+
other than an atomic modify-write operation\iref{atomics.order}, or
69236924
\item continue execution of a trivial infinite loop\iref{stmt.iter.general}.
69246925
\end{itemize}
69256926
\begin{note}
@@ -6976,9 +6977,10 @@
69766977
an \defn{execution step}:
69776978
\begin{itemize}
69786979
\item termination of the thread of execution,
6979-
\item performing an access through a volatile glvalue, or
6980-
\item completion of a call to a library I/O function, a
6981-
synchronization operation, or an atomic operation.
6980+
\item performing an access through a volatile glvalue,
6981+
\item completion of a call to a library I/O function, or
6982+
\item completion of an atomic or synchronization operation
6983+
other than an atomic modify-write operation\iref{atomics.order}.
69826984
\end{itemize}
69836985

69846986
\pnum

source/support.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,7 @@
591591
#define @\defnlibxname{cpp_lib_atomic_is_always_lock_free}@ 201603L // freestanding, also in \libheader{atomic}
592592
#define @\defnlibxname{cpp_lib_atomic_lock_free_type_aliases}@ 201907L // also in \libheader{atomic}
593593
#define @\defnlibxname{cpp_lib_atomic_min_max}@ 202506L // freestanding, also in \libheader{atomic}
594+
#define @\defnlibxname{cpp_lib_atomic_reductions}@ 202506L // freestanding, also in \libheader{atomic}
594595
#define @\defnlibxname{cpp_lib_atomic_ref}@ 202411L // freestanding, also in \libheader{atomic}
595596
#define @\defnlibxname{cpp_lib_atomic_shared_ptr}@ 201711L // also in \libheader{memory}
596597
#define @\defnlibxname{cpp_lib_atomic_value_initialization}@ 201911L // freestanding, also in \libheader{atomic}, \libheader{memory}

0 commit comments

Comments
 (0)