File tree Expand file tree Collapse file tree 1 file changed +5
-0
lines changed Expand file tree Collapse file tree 1 file changed +5
-0
lines changed Original file line number Diff line number Diff line change 11
11
//! This implementation is not fully correct under the revised C++20 model and may generate behaviours C++20
12
12
//! disallows (<https://github.com/rust-lang/miri/issues/2301>).
13
13
//!
14
+ //! A modification is made to the paper's model to partially address C++20 changes.
15
+ //! Specifically, if an SC load reads from an atomic store of any ordering, then a later SC load cannot read from
16
+ //! an earlier store in the location's modification order. This is to prevent creating a backwards S edge from the second
17
+ //! load to the first, as a result of C++20's coherence-ordered before rules.
18
+ //!
14
19
//! Rust follows the C++20 memory model (except for the Consume ordering and some operations not performable through C++'s
15
20
//! std::atomic<T> API). It is therefore possible for this implementation to generate behaviours never observable when the
16
21
//! same program is compiled and run natively. Unfortunately, no literature exists at the time of writing which proposes
You can’t perform that action at this time.
0 commit comments