mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
warn against using intrinsics that leave the scope of our memory model
This commit is contained in:
parent
85c42b751e
commit
79ad512ec0
@ -341,6 +341,9 @@ extern "rust-intrinsic" {
|
||||
/// [`Ordering::Relaxed`] as the `order`. For example, [`AtomicBool::load`].
|
||||
#[rustc_nounwind]
|
||||
pub fn atomic_load_relaxed<T: Copy>(src: *const T) -> T;
|
||||
/// Do NOT use this intrinsic; "unordered" operations do not exist in our memory model!
|
||||
/// In terms of the Rust Abstract Machine, this operation is equivalent to `src.read()`,
|
||||
/// i.e., it performs a non-atomic read.
|
||||
#[rustc_nounwind]
|
||||
pub fn atomic_load_unordered<T: Copy>(src: *const T) -> T;
|
||||
|
||||
@ -365,6 +368,9 @@ extern "rust-intrinsic" {
|
||||
/// [`Ordering::Relaxed`] as the `order`. For example, [`AtomicBool::store`].
|
||||
#[rustc_nounwind]
|
||||
pub fn atomic_store_relaxed<T: Copy>(dst: *mut T, val: T);
|
||||
/// Do NOT use this intrinsic; "unordered" operations do not exist in our memory model!
|
||||
/// In terms of the Rust Abstract Machine, this operation is equivalent to `dst.write(val)`,
|
||||
/// i.e., it performs a non-atomic write.
|
||||
#[rustc_nounwind]
|
||||
pub fn atomic_store_unordered<T: Copy>(dst: *mut T, val: T);
|
||||
|
||||
@ -2312,6 +2318,10 @@ extern "rust-intrinsic" {
|
||||
|
||||
/// Emits a `!nontemporal` store according to LLVM (see their docs).
|
||||
/// Probably will never become stable.
|
||||
///
|
||||
/// Do NOT use this intrinsic; "nontemporal" operations do not exist in our memory model!
|
||||
/// It exists to support current stdarch, but the plan is to change stdarch and remove this intrinsic.
|
||||
/// See <https://github.com/rust-lang/rust/issues/114582> for some more discussion.
|
||||
#[rustc_nounwind]
|
||||
pub fn nontemporal_store<T>(ptr: *mut T, val: T);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user