move strict provenance lints to new feature gate, remove old feature gates
This commit is contained in:
parent
c3e928d8dd
commit
56ee492a6e
@ -23,7 +23,6 @@
|
||||
#![feature(maybe_uninit_slice)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(rustdoc_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![warn(unreachable_pub)]
|
||||
// tidy-alphabetical-end
|
||||
|
||||
|
@ -11,7 +11,6 @@
|
||||
#![feature(let_chains)]
|
||||
#![feature(negative_impls)]
|
||||
#![feature(rustdoc_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(trait_alias)]
|
||||
#![feature(try_blocks)]
|
||||
#![warn(unreachable_pub)]
|
||||
|
@ -10,7 +10,6 @@
|
||||
#![feature(never_type)]
|
||||
#![feature(rustdoc_internals)]
|
||||
#![feature(slice_ptr_get)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(trait_alias)]
|
||||
#![feature(try_blocks)]
|
||||
#![feature(unqualified_local_imports)]
|
||||
|
@ -33,7 +33,6 @@
|
||||
#![feature(ptr_alignment_type)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(rustdoc_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(test)]
|
||||
#![feature(thread_id_value)]
|
||||
#![feature(type_alias_impl_trait)]
|
||||
|
@ -598,7 +598,7 @@ pub fn internal(&self, feature: Symbol) -> bool {
|
||||
/// Allows attributes on expressions and non-item statements.
|
||||
(unstable, stmt_expr_attributes, "1.6.0", Some(15701)),
|
||||
/// Allows lints part of the strict provenance effort.
|
||||
(unstable, strict_provenance, "1.61.0", Some(95228)),
|
||||
(unstable, strict_provenance_lints, "1.61.0", Some(130351)),
|
||||
/// Allows string patterns to dereference values to match them.
|
||||
(unstable, string_deref_patterns, "1.67.0", Some(87121)),
|
||||
/// Allows the use of `#[target_feature]` on safe functions.
|
||||
|
@ -2667,7 +2667,6 @@
|
||||
/// ### Example
|
||||
///
|
||||
/// ```rust
|
||||
/// #![feature(strict_provenance)]
|
||||
/// #![warn(fuzzy_provenance_casts)]
|
||||
///
|
||||
/// fn main() {
|
||||
@ -2701,7 +2700,7 @@
|
||||
pub FUZZY_PROVENANCE_CASTS,
|
||||
Allow,
|
||||
"a fuzzy integer to pointer cast is used",
|
||||
@feature_gate = strict_provenance;
|
||||
@feature_gate = strict_provenance_lints;
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
@ -2711,7 +2710,6 @@
|
||||
/// ### Example
|
||||
///
|
||||
/// ```rust
|
||||
/// #![feature(strict_provenance)]
|
||||
/// #![warn(lossy_provenance_casts)]
|
||||
///
|
||||
/// fn main() {
|
||||
@ -2747,7 +2745,7 @@
|
||||
pub LOSSY_PROVENANCE_CASTS,
|
||||
Allow,
|
||||
"a lossy pointer to integer cast is used",
|
||||
@feature_gate = strict_provenance;
|
||||
@feature_gate = strict_provenance_lints;
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
|
@ -56,7 +56,6 @@
|
||||
#![feature(ptr_alignment_type)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(rustdoc_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(trait_upcasting)]
|
||||
#![feature(trusted_len)]
|
||||
#![feature(try_blocks)]
|
||||
|
@ -1913,7 +1913,7 @@
|
||||
str_trim,
|
||||
str_trim_end,
|
||||
str_trim_start,
|
||||
strict_provenance,
|
||||
strict_provenance_lints,
|
||||
string_as_mut_str,
|
||||
string_as_str,
|
||||
string_deref_patterns,
|
||||
|
@ -4,7 +4,8 @@
|
||||
#![feature(iter_next_chunk)]
|
||||
#![feature(repr_simd)]
|
||||
#![feature(slice_partition_dedup)]
|
||||
#![feature(strict_provenance)]
|
||||
#![cfg_attr(bootstrap, feature(strict_provenance))]
|
||||
#![cfg_attr(not(bootstrap), feature(strict_provenance_lints))]
|
||||
#![feature(test)]
|
||||
#![deny(fuzzy_provenance_casts)]
|
||||
|
||||
|
@ -147,7 +147,6 @@
|
||||
#![feature(slice_range)]
|
||||
#![feature(std_internals)]
|
||||
#![feature(str_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(trusted_fused)]
|
||||
#![feature(trusted_len)]
|
||||
#![feature(trusted_random_access)]
|
||||
@ -162,6 +161,8 @@
|
||||
//
|
||||
// Language features:
|
||||
// tidy-alphabetical-start
|
||||
#![cfg_attr(bootstrap, feature(strict_provenance))]
|
||||
#![cfg_attr(not(bootstrap), feature(strict_provenance_lints))]
|
||||
#![cfg_attr(not(test), feature(coroutine_trait))]
|
||||
#![cfg_attr(test, feature(panic_update_hook))]
|
||||
#![cfg_attr(test, feature(test))]
|
||||
|
@ -32,7 +32,8 @@
|
||||
#![feature(panic_update_hook)]
|
||||
#![feature(pointer_is_aligned_to)]
|
||||
#![feature(thin_box)]
|
||||
#![feature(strict_provenance)]
|
||||
#![cfg_attr(bootstrap, feature(strict_provenance))]
|
||||
#![cfg_attr(not(bootstrap), feature(strict_provenance_lints))]
|
||||
#![feature(drain_keep_rest)]
|
||||
#![feature(local_waker)]
|
||||
#![feature(vec_pop_if)]
|
||||
|
@ -2794,7 +2794,6 @@ pub const fn const_eval_select<ARG: Tuple, F, G, RET>(
|
||||
/// #![feature(is_val_statically_known)]
|
||||
/// #![feature(core_intrinsics)]
|
||||
/// # #![allow(internal_features)]
|
||||
/// #![feature(strict_provenance)]
|
||||
/// use std::intrinsics::is_val_statically_known;
|
||||
///
|
||||
/// fn foo(x: &i32) -> bool {
|
||||
|
@ -163,7 +163,6 @@
|
||||
#![feature(str_internals)]
|
||||
#![feature(str_split_inclusive_remainder)]
|
||||
#![feature(str_split_remainder)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(ub_checks)]
|
||||
#![feature(unchecked_neg)]
|
||||
#![feature(unchecked_shifts)]
|
||||
@ -174,6 +173,8 @@
|
||||
//
|
||||
// Language features:
|
||||
// tidy-alphabetical-start
|
||||
#![cfg_attr(bootstrap, feature(strict_provenance))]
|
||||
#![cfg_attr(not(bootstrap), feature(strict_provenance_lints))]
|
||||
#![feature(abi_unadjusted)]
|
||||
#![feature(adt_const_params)]
|
||||
#![feature(allow_internal_unsafe)]
|
||||
|
@ -552,7 +552,7 @@ pub const fn wrapping_byte_offset(self, count: isize) -> Self {
|
||||
/// ## Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_mask, strict_provenance)]
|
||||
/// #![feature(ptr_mask)]
|
||||
/// let v = 17_u32;
|
||||
/// let ptr: *const u32 = &v;
|
||||
///
|
||||
|
@ -290,8 +290,6 @@
|
||||
//! represent the tagged pointer as an actual pointer and not a `usize`*. For instance:
|
||||
//!
|
||||
//! ```
|
||||
//! #![feature(strict_provenance)]
|
||||
//!
|
||||
//! unsafe {
|
||||
//! // A flag we want to pack into our pointer
|
||||
//! static HAS_DATA: usize = 0x1;
|
||||
|
@ -549,7 +549,7 @@ pub const fn wrapping_byte_offset(self, count: isize) -> Self {
|
||||
/// ## Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_mask, strict_provenance)]
|
||||
/// #![feature(ptr_mask)]
|
||||
/// let mut v = 17_u32;
|
||||
/// let ptr: *mut u32 = &mut v;
|
||||
///
|
||||
|
@ -748,7 +748,6 @@ pub const fn cast<U>(self) -> NonNull<U> {
|
||||
/// *Incorrect* usage:
|
||||
///
|
||||
/// ```rust,no_run
|
||||
/// #![feature(strict_provenance)]
|
||||
/// use std::ptr::NonNull;
|
||||
///
|
||||
/// let ptr1 = NonNull::new(Box::into_raw(Box::new(0u8))).unwrap();
|
||||
|
@ -1758,7 +1758,7 @@ pub fn fetch_update<F>(
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(strict_provenance_atomic_ptr, strict_provenance)]
|
||||
/// #![feature(strict_provenance_atomic_ptr)]
|
||||
/// use core::sync::atomic::{AtomicPtr, Ordering};
|
||||
///
|
||||
/// let atom = AtomicPtr::<i64>::new(core::ptr::null_mut());
|
||||
@ -1838,7 +1838,7 @@ pub fn fetch_ptr_sub(&self, val: usize, order: Ordering) -> *mut T {
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(strict_provenance_atomic_ptr, strict_provenance)]
|
||||
/// #![feature(strict_provenance_atomic_ptr)]
|
||||
/// use core::sync::atomic::{AtomicPtr, Ordering};
|
||||
///
|
||||
/// let atom = AtomicPtr::<i64>::new(core::ptr::null_mut());
|
||||
@ -1874,7 +1874,7 @@ pub fn fetch_byte_add(&self, val: usize, order: Ordering) -> *mut T {
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(strict_provenance_atomic_ptr, strict_provenance)]
|
||||
/// #![feature(strict_provenance_atomic_ptr)]
|
||||
/// use core::sync::atomic::{AtomicPtr, Ordering};
|
||||
///
|
||||
/// let atom = AtomicPtr::<i64>::new(core::ptr::without_provenance_mut(1));
|
||||
@ -1919,7 +1919,7 @@ pub fn fetch_byte_sub(&self, val: usize, order: Ordering) -> *mut T {
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(strict_provenance_atomic_ptr, strict_provenance)]
|
||||
/// #![feature(strict_provenance_atomic_ptr)]
|
||||
/// use core::sync::atomic::{AtomicPtr, Ordering};
|
||||
///
|
||||
/// let pointer = &mut 3i64 as *mut i64;
|
||||
@ -1970,7 +1970,7 @@ pub fn fetch_or(&self, val: usize, order: Ordering) -> *mut T {
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(strict_provenance_atomic_ptr, strict_provenance)]
|
||||
/// #![feature(strict_provenance_atomic_ptr)]
|
||||
/// use core::sync::atomic::{AtomicPtr, Ordering};
|
||||
///
|
||||
/// let pointer = &mut 3i64 as *mut i64;
|
||||
@ -2020,7 +2020,7 @@ pub fn fetch_and(&self, val: usize, order: Ordering) -> *mut T {
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(strict_provenance_atomic_ptr, strict_provenance)]
|
||||
/// #![feature(strict_provenance_atomic_ptr)]
|
||||
/// use core::sync::atomic::{AtomicPtr, Ordering};
|
||||
///
|
||||
/// let pointer = &mut 3i64 as *mut i64;
|
||||
|
@ -1,4 +1,6 @@
|
||||
// tidy-alphabetical-start
|
||||
#![cfg_attr(bootstrap, feature(strict_provenance))]
|
||||
#![cfg_attr(not(bootstrap), feature(strict_provenance_lints))]
|
||||
#![cfg_attr(target_has_atomic = "128", feature(integer_atomics))]
|
||||
#![cfg_attr(test, feature(cfg_match))]
|
||||
#![feature(alloc_layout_extra)]
|
||||
@ -85,7 +87,6 @@
|
||||
#![feature(std_internals)]
|
||||
#![feature(step_trait)]
|
||||
#![feature(str_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(strict_provenance_atomic_ptr)]
|
||||
#![feature(test)]
|
||||
#![feature(trait_upcasting)]
|
||||
|
@ -19,8 +19,6 @@
|
||||
#![feature(panic_unwind)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(std_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(exposed_provenance)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![panic_runtime]
|
||||
#![feature(panic_runtime)]
|
||||
|
@ -9,7 +9,6 @@
|
||||
repr_simd,
|
||||
simd_ffi,
|
||||
staged_api,
|
||||
strict_provenance,
|
||||
prelude_import,
|
||||
ptr_metadata
|
||||
)]
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(portable_simd, strict_provenance, exposed_provenance)]
|
||||
#![feature(portable_simd)]
|
||||
|
||||
use core_simd::simd::{
|
||||
ptr::{SimdConstPtr, SimdMutPtr},
|
||||
|
@ -32,7 +32,6 @@
|
||||
#![feature(restricted_std)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(min_specialization)]
|
||||
#![feature(strict_provenance)]
|
||||
#![recursion_limit = "256"]
|
||||
#![allow(internal_features)]
|
||||
#![deny(ffi_unwind_calls)]
|
||||
|
@ -279,6 +279,8 @@
|
||||
//
|
||||
// Language features:
|
||||
// tidy-alphabetical-start
|
||||
#![cfg_attr(bootstrap, feature(strict_provenance))]
|
||||
#![cfg_attr(not(bootstrap), feature(strict_provenance_lints))]
|
||||
#![feature(alloc_error_handler)]
|
||||
#![feature(allocator_internals)]
|
||||
#![feature(allow_internal_unsafe)]
|
||||
@ -336,7 +338,6 @@
|
||||
#![feature(error_iter)]
|
||||
#![feature(exact_size_is_empty)]
|
||||
#![feature(exclusive_wrapper)]
|
||||
#![feature(exposed_provenance)]
|
||||
#![feature(extend_one)]
|
||||
#![feature(float_gamma)]
|
||||
#![feature(float_minimum_maximum)]
|
||||
@ -362,7 +363,6 @@
|
||||
#![feature(slice_range)]
|
||||
#![feature(std_internals)]
|
||||
#![feature(str_internals)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(strict_provenance_atomic_ptr)]
|
||||
#![feature(ub_checks)]
|
||||
// tidy-alphabetical-end
|
||||
|
@ -2,7 +2,6 @@
|
||||
#![unstable(feature = "panic_unwind", issue = "32837")]
|
||||
#![feature(link_cfg)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(strict_provenance)]
|
||||
#![cfg_attr(not(target_env = "msvc"), feature(libc))]
|
||||
#![cfg_attr(
|
||||
all(target_family = "wasm", not(target_os = "emscripten")),
|
||||
|
@ -1,18 +1,17 @@
|
||||
# `strict_provenance`
|
||||
# `strict_provenance_lints`
|
||||
|
||||
The tracking issue for this feature is: [#95228]
|
||||
|
||||
[#95228]: https://github.com/rust-lang/rust/issues/95228
|
||||
-----
|
||||
|
||||
The `strict_provenance` feature allows to enable the `fuzzy_provenance_casts` and `lossy_provenance_casts` lints.
|
||||
The `strict_provenance_lints` feature allows to enable the `fuzzy_provenance_casts` and `lossy_provenance_casts` lints.
|
||||
These lint on casts between integers and pointers, that are recommended against or invalid in the strict provenance model.
|
||||
The same feature gate is also used for the experimental strict provenance API in `std` (actually `core`).
|
||||
|
||||
## Example
|
||||
|
||||
```rust
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(strict_provenance_lints)]
|
||||
#![warn(fuzzy_provenance_casts)]
|
||||
|
||||
fn main() {
|
@ -11,8 +11,6 @@
|
||||
#![feature(let_chains)]
|
||||
#![feature(trait_upcasting)]
|
||||
#![feature(strict_overflow_ops)]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(exposed_provenance)]
|
||||
#![feature(pointer_is_aligned_to)]
|
||||
#![feature(unqualified_local_imports)]
|
||||
// Configure clippy and other lints
|
||||
|
@ -1,4 +1,3 @@
|
||||
#![feature(strict_provenance)]
|
||||
use std::ptr;
|
||||
|
||||
fn direct_raw(x: *const (i32, i32)) -> *const i32 {
|
||||
|
@ -1,6 +1,5 @@
|
||||
// Should be caught even without retagging
|
||||
//@compile-flags: -Zmiri-disable-stacked-borrows
|
||||
#![feature(strict_provenance)]
|
||||
use std::ptr::{self, addr_of_mut};
|
||||
|
||||
// Deref'ing a dangling raw pointer is fine, but for a dangling box it is not.
|
||||
|
@ -1,6 +1,5 @@
|
||||
// Should be caught even without retagging
|
||||
//@compile-flags: -Zmiri-disable-stacked-borrows
|
||||
#![feature(strict_provenance)]
|
||||
use std::ptr::{self, addr_of_mut};
|
||||
|
||||
// Deref'ing a dangling raw pointer is fine, but for a dangling reference it is not.
|
||||
|
@ -1,4 +1,3 @@
|
||||
#![feature(strict_provenance)]
|
||||
use core::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -1,4 +1,3 @@
|
||||
#![feature(strict_provenance)]
|
||||
use std::mem;
|
||||
|
||||
#[repr(C, usize)]
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-permissive-provenance
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::mem;
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-permissive-provenance
|
||||
#![feature(strict_provenance, exposed_provenance)]
|
||||
|
||||
fn main() {
|
||||
let x: i32 = 3;
|
||||
|
@ -1,4 +1,3 @@
|
||||
#![feature(strict_provenance, exposed_provenance)]
|
||||
|
||||
// Ensure that a `ptr::without_provenance` ptr is truly invalid.
|
||||
fn main() {
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-strict-provenance
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
fn main() {
|
||||
let x = 22;
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-strict-provenance
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
fn main() {
|
||||
let addr = &0 as *const i32 as usize;
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-permissive-provenance
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
// If we have only exposed read-only pointers, doing a write through a wildcard ptr should fail.
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
//@compile-flags: -Zmiri-symbolic-alignment-check
|
||||
//@revisions: call_unaligned_ptr read_unaligned_ptr
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
#[path = "../../utils/mod.rs"]
|
||||
mod utils;
|
||||
|
@ -1,7 +1,6 @@
|
||||
//@compile-flags: -Zmiri-disable-validation
|
||||
//@error-in-other-file: memory is uninitialized at [0x4..0x8]
|
||||
//@normalize-stderr-test: "a[0-9]+" -> "ALLOC"
|
||||
#![feature(strict_provenance)]
|
||||
#![allow(dropping_copy_types)]
|
||||
|
||||
// Test printing allocations that contain single-byte provenance.
|
||||
|
@ -3,7 +3,6 @@
|
||||
//@compile-flags: -Zmiri-disable-isolation -Zmiri-num-cpus=4
|
||||
#![feature(io_error_more)]
|
||||
#![feature(pointer_is_aligned_to)]
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::mem::{size_of, size_of_val};
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
//@only-target: linux
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
use std::convert::TryInto;
|
||||
|
||||
fn main() {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(strict_provenance, pointer_is_aligned_to)]
|
||||
#![feature(pointer_is_aligned_to)]
|
||||
use std::{mem, ptr, slice};
|
||||
|
||||
fn test_memcpy() {
|
||||
|
@ -2,7 +2,6 @@
|
||||
//@compile-flags: -Zmiri-disable-isolation
|
||||
#![feature(io_error_more)]
|
||||
#![feature(pointer_is_aligned_to)]
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::mem::transmute;
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
//@ignore-target: windows # No mmap on Windows
|
||||
//@compile-flags: -Zmiri-disable-isolation -Zmiri-permissive-provenance
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::io::Error;
|
||||
use std::{ptr, slice};
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-symbolic-alignment-check
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::mem;
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
//@[tree]compile-flags: -Zmiri-tree-borrows
|
||||
//@compile-flags: -Zmiri-strict-provenance
|
||||
|
||||
#![feature(strict_provenance, strict_provenance_atomic_ptr)]
|
||||
#![feature(strict_provenance_atomic_ptr)]
|
||||
// FIXME(static_mut_refs): Do not allow `static_mut_refs` lint
|
||||
#![allow(static_mut_refs)]
|
||||
|
||||
|
@ -5,7 +5,6 @@
|
||||
//@revisions: stack tree
|
||||
//@[tree]compile-flags: -Zmiri-tree-borrows
|
||||
#![feature(allocator_api)]
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::alloc::{AllocError, Allocator, Layout};
|
||||
use std::cell::{Cell, UnsafeCell};
|
||||
|
@ -1,7 +1,6 @@
|
||||
//! Regression test for <https://github.com/rust-lang/miri/issues/3450>:
|
||||
//! When the address gets reused, there should be a happens-before relation.
|
||||
//@compile-flags: -Zmiri-address-reuse-cross-thread-rate=1.0
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(sync_unsafe_cell)]
|
||||
|
||||
use std::cell::SyncUnsafeCell;
|
||||
|
@ -7,7 +7,6 @@
|
||||
// MIR inlining will put every evaluation of the const we're repeatedly evaluating into the same
|
||||
// stack frame, breaking this test.
|
||||
//@compile-flags: -Zinline-mir=no
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
const EVALS: usize = 256;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(custom_mir, core_intrinsics, strict_provenance)]
|
||||
#![feature(custom_mir, core_intrinsics)]
|
||||
use std::intrinsics::mir::*;
|
||||
|
||||
// The `Drop` terminator on a type with no drop glue should be a NOP.
|
||||
|
@ -1,6 +1,6 @@
|
||||
//@revisions: stack tree
|
||||
//@[tree]compile-flags: -Zmiri-tree-borrows
|
||||
#![feature(extern_types, strict_provenance)]
|
||||
#![feature(extern_types)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
//@revisions: stack tree
|
||||
//@[tree]compile-flags: -Zmiri-tree-borrows
|
||||
#![feature(strict_provenance)]
|
||||
use std::{mem, ptr};
|
||||
|
||||
const PTR_SIZE: usize = mem::size_of::<&i32>();
|
||||
|
@ -2,7 +2,6 @@
|
||||
// Tree Borrows doesn't support int2ptr casts, but let's make sure we don't immediately crash either.
|
||||
//@[tree]compile-flags: -Zmiri-tree-borrows
|
||||
//@[stack]compile-flags: -Zmiri-permissive-provenance
|
||||
#![feature(strict_provenance, exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
#![feature(strict_provenance)]
|
||||
use std::mem;
|
||||
use std::ptr::{self, addr_of};
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
#![feature(ptr_mask)]
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
fn main() {
|
||||
let v: u32 = 0xABCDABCD;
|
||||
|
@ -4,7 +4,6 @@
|
||||
#![feature(slice_as_chunks)]
|
||||
#![feature(slice_partition_dedup)]
|
||||
#![feature(layout_for_ptr)]
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::{ptr, slice};
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-permissive-provenance
|
||||
#![feature(exposed_provenance)]
|
||||
use std::ptr;
|
||||
|
||||
// Just to make sure that casting a ref to raw, to int and back to raw
|
||||
|
@ -2,7 +2,6 @@
|
||||
// printing, not how it interacts with the GC.
|
||||
//@compile-flags: -Zmiri-permissive-provenance -Zmiri-provenance-gc=0
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
use std::alloc::{self, Layout};
|
||||
use std::mem::ManuallyDrop;
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
//@compile-flags: -Zmiri-permissive-provenance
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
//@revisions: stack tree
|
||||
//@[tree]compile-flags: -Zmiri-tree-borrows
|
||||
#![feature(strict_provenance)]
|
||||
use std::{mem, ptr};
|
||||
|
||||
fn t1() {
|
||||
|
@ -1,5 +1,4 @@
|
||||
// Various tests ensuring that underscore patterns really just construct the place, but don't check its contents.
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(never_type)]
|
||||
|
||||
use std::ptr;
|
||||
|
@ -1,5 +1,4 @@
|
||||
//! Tests specific for <https://github.com/rust-lang/rust/issues/117945>: zero-sized operations.
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
//@ compile-flags: -O -Cno-prepopulate-passes
|
||||
#![crate_type = "lib"]
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(strict_provenance_atomic_ptr)]
|
||||
|
||||
use std::ptr::without_provenance_mut;
|
||||
|
@ -1,7 +1,6 @@
|
||||
//@ compile-flags: -O -C debug-assertions=yes
|
||||
|
||||
#![crate_type = "lib"]
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
#[no_mangle]
|
||||
pub fn test(src: *const u8, dst: *const u8) -> usize {
|
||||
|
@ -5,8 +5,6 @@
|
||||
|
||||
// Regression for <https://github.com/rust-lang/rust/issues/127089>
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
struct Foo<T>(std::marker::PhantomData<T>);
|
||||
|
||||
impl<T> Foo<T> {
|
||||
|
@ -2,8 +2,6 @@
|
||||
//@ compile-flags: -Copt-level=2
|
||||
//@ run-pass
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Based on https://github.com/rust-lang/rust/issues/107975#issuecomment-1434203908
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn f() -> usize {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Based on https://github.com/rust-lang/rust/issues/107975#issuecomment-1432161340
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
#[inline(never)]
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Based on https://github.com/rust-lang/rust/issues/107975#issuecomment-1432161340
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
#[inline(never)]
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// https://github.com/rust-lang/rust/issues/107975#issuecomment-1430704499
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// https://github.com/rust-lang/rust/issues/107975#issuecomment-1430704499
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// https://github.com/rust-lang/rust/issues/107975#issuecomment-1431758601
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::{
|
||||
cell::{Ref, RefCell},
|
||||
ptr,
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Derived from https://github.com/rust-lang/rust/issues/107975#issuecomment-1431758601
|
||||
|
||||
#![feature(exposed_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -2,8 +2,6 @@
|
||||
//@ compile-flags: -Copt-level=2
|
||||
//@ run-pass
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Based on https://github.com/rust-lang/rust/issues/107975#issuecomment-1434203908
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn f() -> usize {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Based on https://github.com/rust-lang/rust/issues/107975#issuecomment-1432161340
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
#[inline(never)]
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Based on https://github.com/rust-lang/rust/issues/107975#issuecomment-1432161340
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
#[inline(never)]
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// https://github.com/rust-lang/rust/issues/107975#issuecomment-1430704499
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// https://github.com/rust-lang/rust/issues/107975#issuecomment-1430704499
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// https://github.com/rust-lang/rust/issues/107975#issuecomment-1431758601
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::{
|
||||
cell::{Ref, RefCell},
|
||||
ptr,
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
// Derived from https://github.com/rust-lang/rust/issues/107975#issuecomment-1431758601
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::ptr;
|
||||
|
||||
fn main() {
|
||||
|
@ -1,24 +1,24 @@
|
||||
warning: unknown lint: `fuzzy_provenance_casts`
|
||||
--> $DIR/feature-gate-strict_provenance.rs:3:1
|
||||
--> $DIR/feature-gate-strict_provenance_lints.rs:3:1
|
||||
|
|
||||
LL | #![deny(fuzzy_provenance_casts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the `fuzzy_provenance_casts` lint is unstable
|
||||
= note: see issue #95228 <https://github.com/rust-lang/rust/issues/95228> for more information
|
||||
= help: add `#![feature(strict_provenance)]` to the crate attributes to enable
|
||||
= note: see issue #130351 <https://github.com/rust-lang/rust/issues/130351> for more information
|
||||
= help: add `#![feature(strict_provenance_lints)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= note: `#[warn(unknown_lints)]` on by default
|
||||
|
||||
warning: unknown lint: `lossy_provenance_casts`
|
||||
--> $DIR/feature-gate-strict_provenance.rs:5:1
|
||||
--> $DIR/feature-gate-strict_provenance_lints.rs:5:1
|
||||
|
|
||||
LL | #![deny(lossy_provenance_casts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the `lossy_provenance_casts` lint is unstable
|
||||
= note: see issue #95228 <https://github.com/rust-lang/rust/issues/95228> for more information
|
||||
= help: add `#![feature(strict_provenance)]` to the crate attributes to enable
|
||||
= note: see issue #130351 <https://github.com/rust-lang/rust/issues/130351> for more information
|
||||
= help: add `#![feature(strict_provenance_lints)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
warning: 2 warnings emitted
|
@ -1,4 +1,4 @@
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(strict_provenance_lints)]
|
||||
#![deny(fuzzy_provenance_casts)]
|
||||
|
||||
fn main() {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(strict_provenance)]
|
||||
#![feature(strict_provenance_lints)]
|
||||
#![deny(lossy_provenance_casts)]
|
||||
|
||||
fn main() {
|
||||
|
@ -7,8 +7,6 @@
|
||||
// that will fail on dereferencing of a pointer to u64 which is not 8-byte-aligned but is
|
||||
// 4-byte-aligned.
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
fn main() {
|
||||
let mut x = [0u64; 2];
|
||||
let ptr = x.as_mut_ptr();
|
||||
|
@ -1,8 +1,6 @@
|
||||
//@ run-pass
|
||||
//@ compile-flags: -C debug-assertions
|
||||
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
#[repr(packed)]
|
||||
struct Misaligner {
|
||||
_head: u8,
|
||||
|
@ -5,7 +5,6 @@
|
||||
#![allow(dead_code)]
|
||||
#![feature(never_type)]
|
||||
#![feature(pointer_is_aligned_to)]
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
use std::mem::size_of;
|
||||
use std::num::NonZero;
|
||||
|
Loading…
Reference in New Issue
Block a user