Skip to content

Commit ed9e767

Browse files
authored
Rollup merge of #145467 - Kivooeo:stabilize-strict_provenance_atomic_ptr, r=scottmcm
Stabilize `strict_provenance_atomic_ptr` feature This closes [tracking issue](#99108) and stabilises `AtomicPtr::{fetch_ptr_add, fetch_ptr_sub, fetch_byte_add, fetch_byte_sub, fetch_or, fetch_and, fetch_xor}` --- EDIT: FCP completed at #99108 (comment)
2 parents 19ae976 + b951b5d commit ed9e767

File tree

5 files changed

+7
-18
lines changed

5 files changed

+7
-18
lines changed

library/core/src/sync/atomic.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2199,7 +2199,6 @@ impl<T> AtomicPtr<T> {
21992199
/// # Examples
22002200
///
22012201
/// ```
2202-
/// #![feature(strict_provenance_atomic_ptr)]
22032202
/// use core::sync::atomic::{AtomicPtr, Ordering};
22042203
///
22052204
/// let atom = AtomicPtr::<i64>::new(core::ptr::null_mut());
@@ -2209,7 +2208,7 @@ impl<T> AtomicPtr<T> {
22092208
/// ```
22102209
#[inline]
22112210
#[cfg(target_has_atomic = "ptr")]
2212-
#[unstable(feature = "strict_provenance_atomic_ptr", issue = "99108")]
2211+
#[stable(feature = "strict_provenance_atomic_ptr", since = "CURRENT_RUSTC_VERSION")]
22132212
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
22142213
pub fn fetch_ptr_add(&self, val: usize, order: Ordering) -> *mut T {
22152214
self.fetch_byte_add(val.wrapping_mul(size_of::<T>()), order)
@@ -2240,7 +2239,6 @@ impl<T> AtomicPtr<T> {
22402239
/// # Examples
22412240
///
22422241
/// ```
2243-
/// #![feature(strict_provenance_atomic_ptr)]
22442242
/// use core::sync::atomic::{AtomicPtr, Ordering};
22452243
///
22462244
/// let array = [1i32, 2i32];
@@ -2254,7 +2252,7 @@ impl<T> AtomicPtr<T> {
22542252
/// ```
22552253
#[inline]
22562254
#[cfg(target_has_atomic = "ptr")]
2257-
#[unstable(feature = "strict_provenance_atomic_ptr", issue = "99108")]
2255+
#[stable(feature = "strict_provenance_atomic_ptr", since = "CURRENT_RUSTC_VERSION")]
22582256
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
22592257
pub fn fetch_ptr_sub(&self, val: usize, order: Ordering) -> *mut T {
22602258
self.fetch_byte_sub(val.wrapping_mul(size_of::<T>()), order)
@@ -2279,7 +2277,6 @@ impl<T> AtomicPtr<T> {
22792277
/// # Examples
22802278
///
22812279
/// ```
2282-
/// #![feature(strict_provenance_atomic_ptr)]
22832280
/// use core::sync::atomic::{AtomicPtr, Ordering};
22842281
///
22852282
/// let atom = AtomicPtr::<i64>::new(core::ptr::null_mut());
@@ -2289,7 +2286,7 @@ impl<T> AtomicPtr<T> {
22892286
/// ```
22902287
#[inline]
22912288
#[cfg(target_has_atomic = "ptr")]
2292-
#[unstable(feature = "strict_provenance_atomic_ptr", issue = "99108")]
2289+
#[stable(feature = "strict_provenance_atomic_ptr", since = "CURRENT_RUSTC_VERSION")]
22932290
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
22942291
pub fn fetch_byte_add(&self, val: usize, order: Ordering) -> *mut T {
22952292
// SAFETY: data races are prevented by atomic intrinsics.
@@ -2315,7 +2312,6 @@ impl<T> AtomicPtr<T> {
23152312
/// # Examples
23162313
///
23172314
/// ```
2318-
/// #![feature(strict_provenance_atomic_ptr)]
23192315
/// use core::sync::atomic::{AtomicPtr, Ordering};
23202316
///
23212317
/// let mut arr = [0i64, 1];
@@ -2325,7 +2321,7 @@ impl<T> AtomicPtr<T> {
23252321
/// ```
23262322
#[inline]
23272323
#[cfg(target_has_atomic = "ptr")]
2328-
#[unstable(feature = "strict_provenance_atomic_ptr", issue = "99108")]
2324+
#[stable(feature = "strict_provenance_atomic_ptr", since = "CURRENT_RUSTC_VERSION")]
23292325
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
23302326
pub fn fetch_byte_sub(&self, val: usize, order: Ordering) -> *mut T {
23312327
// SAFETY: data races are prevented by atomic intrinsics.
@@ -2361,7 +2357,6 @@ impl<T> AtomicPtr<T> {
23612357
/// # Examples
23622358
///
23632359
/// ```
2364-
/// #![feature(strict_provenance_atomic_ptr)]
23652360
/// use core::sync::atomic::{AtomicPtr, Ordering};
23662361
///
23672362
/// let pointer = &mut 3i64 as *mut i64;
@@ -2376,7 +2371,7 @@ impl<T> AtomicPtr<T> {
23762371
/// ```
23772372
#[inline]
23782373
#[cfg(target_has_atomic = "ptr")]
2379-
#[unstable(feature = "strict_provenance_atomic_ptr", issue = "99108")]
2374+
#[stable(feature = "strict_provenance_atomic_ptr", since = "CURRENT_RUSTC_VERSION")]
23802375
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
23812376
pub fn fetch_or(&self, val: usize, order: Ordering) -> *mut T {
23822377
// SAFETY: data races are prevented by atomic intrinsics.
@@ -2412,7 +2407,6 @@ impl<T> AtomicPtr<T> {
24122407
/// # Examples
24132408
///
24142409
/// ```
2415-
/// #![feature(strict_provenance_atomic_ptr)]
24162410
/// use core::sync::atomic::{AtomicPtr, Ordering};
24172411
///
24182412
/// let pointer = &mut 3i64 as *mut i64;
@@ -2426,7 +2420,7 @@ impl<T> AtomicPtr<T> {
24262420
/// ```
24272421
#[inline]
24282422
#[cfg(target_has_atomic = "ptr")]
2429-
#[unstable(feature = "strict_provenance_atomic_ptr", issue = "99108")]
2423+
#[stable(feature = "strict_provenance_atomic_ptr", since = "CURRENT_RUSTC_VERSION")]
24302424
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
24312425
pub fn fetch_and(&self, val: usize, order: Ordering) -> *mut T {
24322426
// SAFETY: data races are prevented by atomic intrinsics.
@@ -2462,7 +2456,6 @@ impl<T> AtomicPtr<T> {
24622456
/// # Examples
24632457
///
24642458
/// ```
2465-
/// #![feature(strict_provenance_atomic_ptr)]
24662459
/// use core::sync::atomic::{AtomicPtr, Ordering};
24672460
///
24682461
/// let pointer = &mut 3i64 as *mut i64;
@@ -2474,7 +2467,7 @@ impl<T> AtomicPtr<T> {
24742467
/// ```
24752468
#[inline]
24762469
#[cfg(target_has_atomic = "ptr")]
2477-
#[unstable(feature = "strict_provenance_atomic_ptr", issue = "99108")]
2470+
#[stable(feature = "strict_provenance_atomic_ptr", since = "CURRENT_RUSTC_VERSION")]
24782471
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
24792472
pub fn fetch_xor(&self, val: usize, order: Ordering) -> *mut T {
24802473
// SAFETY: data races are prevented by atomic intrinsics.

library/coretests/tests/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
#![feature(std_internals)]
9696
#![feature(step_trait)]
9797
#![feature(str_internals)]
98-
#![feature(strict_provenance_atomic_ptr)]
9998
#![feature(strict_provenance_lints)]
10099
#![feature(test)]
101100
#![feature(trusted_len)]

library/std/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,6 @@
371371
#![feature(slice_range)]
372372
#![feature(std_internals)]
373373
#![feature(str_internals)]
374-
#![feature(strict_provenance_atomic_ptr)]
375374
#![feature(sync_unsafe_cell)]
376375
#![feature(temporary_niche_types)]
377376
#![feature(ub_checks)]

src/tools/miri/tests/pass/atomic.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
//@[tree]compile-flags: -Zmiri-tree-borrows
33
//@compile-flags: -Zmiri-strict-provenance
44

5-
#![feature(strict_provenance_atomic_ptr)]
65
// FIXME(static_mut_refs): Do not allow `static_mut_refs` lint
76
#![allow(static_mut_refs)]
87

tests/codegen-llvm/atomicptr.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
//@ compile-flags: -Copt-level=3 -Cno-prepopulate-passes
88
#![crate_type = "lib"]
9-
#![feature(strict_provenance_atomic_ptr)]
109

1110
use std::ptr::without_provenance_mut;
1211
use std::sync::atomic::AtomicPtr;

0 commit comments

Comments
 (0)