Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions source/threads.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3011,6 +3011,30 @@
\end{codeblock}
\end{note}

\pnum
\begin{note}
An implementation that
translates to instruction sequences for a physical machine and
treats non-volatile atomic accesses as though they were volatile
does not produce out-of-thin-air values for a program free of undefined behavior.
An implementation that
performs only thread-at-a-time analysis in support of optimizations
that omit and merge non-volatile atomic accesses to the same object and
reorder non-volatile atomic accesses to different objects (when permitted by the as-if rule) and
otherwise treats non-volatile atomic accesses as though they were volatile
does not produce out-of-thin-air values for a program free of undefined behavior.
The possibility of out-of-thin-air values remains
for implementations not meeting these restrictions.
\end{note}

\pnum
\begin{note}
Unlike abstract machines,
physical machines are subject to instruction-execution and information-transfer latencies.
Physical machines carefully manage any speculative execution
so as to avoid generating out-of-thin-air values at the hardware level.
\end{note}

\pnum
Atomic read-modify-write operations shall always read the last value
(in the modification order) written before the write associated with
Expand Down
Loading