[llvm] [RFC][LangRef] Specify that the accessed bytes of concurrent atomics must be either disjoint or the same (PR #204329)
Ralf Jung via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 13 07:14:25 PDT 2026
================
@@ -4057,12 +4057,18 @@ Given that definition, R{sub}`byte` is defined as follows:
- Otherwise, if R{sub}`byte` may see exactly one write,
R{sub}`byte` returns the value written by that write.
- Otherwise, if R is atomic, and all the writes R{sub}`byte` may
- see are atomic, it chooses one of the values written. See the {ref}`Atomic
+ see are atomic, and R and the writes all access the exact same set of
+ bytes, it chooses one of the values written. See the {ref}`Atomic
Memory Ordering Constraints <ordering>` section for additional
constraints on how the choice is made. Targets may impose additional
requirements on R and the writes it may see based on their `syncscope`.
- Otherwise R{sub}`byte` returns `undef`.
+Defined atomic accesses cannot tear: Two byte subaccesses R{sub}`byte1`,
+R{sub}`byte2` of an atomic read R cannot read from different atomic
+writes W{sub}`1`, W{sub}`2` if both read subaccesses, R{sub}`byte1`,
----------------
RalfJung wrote:
```suggestion
writes W{sub}`1`, W{sub}`2` even if both read subaccesses, R{sub}`byte1`,
```
Seems more clear to me this way?
https://github.com/llvm/llvm-project/pull/204329
More information about the llvm-commits
mailing list