Skip to content

Commit a0f01c3

Browse files
committed
Auto merge of #126838 - matthiaskrgr:rollup-qkop22o, r=matthiaskrgr
Rollup of 3 pull requests Successful merges: - #126140 (Rename `std::fs::try_exists` to `std::fs::exists` and stabilize fs_try_exists) - #126318 (Add a `x perf` command for integrating bootstrap with `rustc-perf`) - #126552 (Remove use of const traits (and `feature(effects)`) from stdlib) r? `@ghost` `@rustbot` modify labels: rollup
2 parents f944afe + dc9a08f commit a0f01c3

File tree

181 files changed

+2256
-337
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

181 files changed

+2256
-337
lines changed

compiler/rustc_feature/src/unstable.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ declare_features! (
449449
/// Allows `dyn* Trait` objects.
450450
(incomplete, dyn_star, "1.65.0", Some(102425)),
451451
/// Uses generic effect parameters for ~const bounds
452-
(unstable, effects, "1.72.0", Some(102090)),
452+
(incomplete, effects, "1.72.0", Some(102090)),
453453
/// Allows exhaustive pattern matching on types that contain uninhabited types.
454454
(unstable, exhaustive_patterns, "1.13.0", Some(51085)),
455455
/// Allows explicit tail calls via `become` expression.

compiler/rustc_hir_analysis/src/check/intrinsic.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -429,17 +429,17 @@ pub fn check_intrinsic_type(
429429

430430
sym::ptr_guaranteed_cmp => (
431431
1,
432-
1,
432+
0,
433433
vec![Ty::new_imm_ptr(tcx, param(0)), Ty::new_imm_ptr(tcx, param(0))],
434434
tcx.types.u8,
435435
),
436436

437437
sym::const_allocate => {
438-
(0, 1, vec![tcx.types.usize, tcx.types.usize], Ty::new_mut_ptr(tcx, tcx.types.u8))
438+
(0, 0, vec![tcx.types.usize, tcx.types.usize], Ty::new_mut_ptr(tcx, tcx.types.u8))
439439
}
440440
sym::const_deallocate => (
441441
0,
442-
1,
442+
0,
443443
vec![Ty::new_mut_ptr(tcx, tcx.types.u8), tcx.types.usize, tcx.types.usize],
444444
tcx.types.unit,
445445
),
@@ -478,16 +478,16 @@ pub fn check_intrinsic_type(
478478
| sym::frem_algebraic => (1, 0, vec![param(0), param(0)], param(0)),
479479
sym::float_to_int_unchecked => (2, 0, vec![param(0)], param(1)),
480480

481-
sym::assume => (0, 1, vec![tcx.types.bool], tcx.types.unit),
482-
sym::likely => (0, 1, vec![tcx.types.bool], tcx.types.bool),
483-
sym::unlikely => (0, 1, vec![tcx.types.bool], tcx.types.bool),
481+
sym::assume => (0, 0, vec![tcx.types.bool], tcx.types.unit),
482+
sym::likely => (0, 0, vec![tcx.types.bool], tcx.types.bool),
483+
sym::unlikely => (0, 0, vec![tcx.types.bool], tcx.types.bool),
484484

485485
sym::read_via_copy => (1, 0, vec![Ty::new_imm_ptr(tcx, param(0))], param(0)),
486486
sym::write_via_move => {
487487
(1, 0, vec![Ty::new_mut_ptr(tcx, param(0)), param(0)], tcx.types.unit)
488488
}
489489

490-
sym::typed_swap => (1, 1, vec![Ty::new_mut_ptr(tcx, param(0)); 2], tcx.types.unit),
490+
sym::typed_swap => (1, 0, vec![Ty::new_mut_ptr(tcx, param(0)); 2], tcx.types.unit),
491491

492492
sym::discriminant_value => {
493493
let assoc_items = tcx.associated_item_def_ids(
@@ -566,20 +566,20 @@ pub fn check_intrinsic_type(
566566

567567
sym::black_box => (1, 0, vec![param(0)], param(0)),
568568

569-
sym::is_val_statically_known => (1, 1, vec![param(0)], tcx.types.bool),
569+
sym::is_val_statically_known => (1, 0, vec![param(0)], tcx.types.bool),
570570

571-
sym::const_eval_select => (4, 1, vec![param(0), param(1), param(2)], param(3)),
571+
sym::const_eval_select => (4, 0, vec![param(0), param(1), param(2)], param(3)),
572572

573573
sym::vtable_size | sym::vtable_align => {
574574
(0, 0, vec![Ty::new_imm_ptr(tcx, tcx.types.unit)], tcx.types.usize)
575575
}
576576

577577
// This type check is not particularly useful, but the `where` bounds
578578
// on the definition in `core` do the heavy lifting for checking it.
579-
sym::aggregate_raw_ptr => (3, 1, vec![param(1), param(2)], param(0)),
580-
sym::ptr_metadata => (2, 1, vec![Ty::new_imm_ptr(tcx, param(0))], param(1)),
579+
sym::aggregate_raw_ptr => (3, 0, vec![param(1), param(2)], param(0)),
580+
sym::ptr_metadata => (2, 0, vec![Ty::new_imm_ptr(tcx, param(0))], param(1)),
581581

582-
sym::ub_checks => (0, 1, Vec::new(), tcx.types.bool),
582+
sym::ub_checks => (0, 0, Vec::new(), tcx.types.bool),
583583

584584
sym::simd_eq
585585
| sym::simd_ne

library/alloc/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@
176176
#![feature(const_mut_refs)]
177177
#![feature(const_precise_live_drops)]
178178
#![feature(const_ptr_write)]
179-
#![feature(const_trait_impl)]
180179
#![feature(const_try)]
181180
#![feature(decl_macro)]
182181
#![feature(dropck_eyepatch)]

library/core/src/cmp.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ use self::Ordering::*;
245245
append_const_msg
246246
)]
247247
#[rustc_diagnostic_item = "PartialEq"]
248-
#[const_trait]
249248
pub trait PartialEq<Rhs: ?Sized = Self> {
250249
/// This method tests for `self` and `other` values to be equal, and is used
251250
/// by `==`.
@@ -1475,8 +1474,7 @@ mod impls {
14751474
macro_rules! partial_eq_impl {
14761475
($($t:ty)*) => ($(
14771476
#[stable(feature = "rust1", since = "1.0.0")]
1478-
#[rustc_const_unstable(feature = "const_cmp", issue = "92391")]
1479-
impl const PartialEq for $t {
1477+
impl PartialEq for $t {
14801478
#[inline]
14811479
fn eq(&self, other: &$t) -> bool { (*self) == (*other) }
14821480
#[inline]

library/core/src/escape.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const fn escape_ascii<const N: usize>(byte: u8) -> ([ascii::Char; N], Range<u8>)
6060
const fn escape_unicode<const N: usize>(c: char) -> ([ascii::Char; N], Range<u8>) {
6161
const { assert!(N >= 10 && N < u8::MAX as usize) };
6262

63-
let c = u32::from(c);
63+
let c = c as u32;
6464

6565
// OR-ing `1` ensures that for `c == 0` the code computes that
6666
// one digit should be printed.

library/core/src/ffi/c_str.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,10 @@ impl CStr {
515515
#[inline]
516516
#[must_use]
517517
const fn as_non_null_ptr(&self) -> NonNull<c_char> {
518-
NonNull::from(&self.inner).as_non_null_ptr()
518+
// FIXME(effects) replace with `NonNull::from`
519+
// SAFETY: a reference is never null
520+
unsafe { NonNull::new_unchecked(&self.inner as *const [c_char] as *mut [c_char]) }
521+
.as_non_null_ptr()
519522
}
520523

521524
/// Returns the length of `self`. Like C's `strlen`, this does not include the nul terminator.

library/core/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@
200200
// Language features:
201201
// tidy-alphabetical-start
202202
#![cfg_attr(bootstrap, feature(c_unwind))]
203+
#![cfg_attr(bootstrap, feature(effects))]
203204
#![feature(abi_unadjusted)]
204205
#![feature(adt_const_params)]
205206
#![feature(allow_internal_unsafe)]
@@ -214,13 +215,11 @@
214215
#![feature(const_mut_refs)]
215216
#![feature(const_precise_live_drops)]
216217
#![feature(const_refs_to_cell)]
217-
#![feature(const_trait_impl)]
218218
#![feature(decl_macro)]
219219
#![feature(deprecated_suggestion)]
220220
#![feature(doc_cfg)]
221221
#![feature(doc_cfg_hide)]
222222
#![feature(doc_notable_trait)]
223-
#![feature(effects)]
224223
#![feature(extern_types)]
225224
#![feature(f128)]
226225
#![feature(f16)]

library/core/src/marker.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -944,7 +944,6 @@ marker_impls! {
944944
#[lang = "destruct"]
945945
#[rustc_on_unimplemented(message = "can't drop `{Self}`", append_const_msg)]
946946
#[rustc_deny_explicit_impl(implement_via_object = false)]
947-
#[const_trait]
948947
pub trait Destruct {}
949948

950949
/// A marker for tuple types.

library/core/src/num/nonzero.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ use super::{IntErrorKind, ParseIntError};
3333
reason = "implementation detail which may disappear or be replaced at any time",
3434
issue = "none"
3535
)]
36-
#[const_trait]
3736
pub unsafe trait ZeroablePrimitive: Sized + Copy + private::Sealed {
3837
#[doc(hidden)]
3938
type NonZeroInner: Sized + Copy;
@@ -47,7 +46,6 @@ macro_rules! impl_zeroable_primitive {
4746
reason = "implementation detail which may disappear or be replaced at any time",
4847
issue = "none"
4948
)]
50-
#[const_trait]
5149
pub trait Sealed {}
5250

5351
$(
@@ -70,14 +68,14 @@ macro_rules! impl_zeroable_primitive {
7068
reason = "implementation detail which may disappear or be replaced at any time",
7169
issue = "none"
7270
)]
73-
impl const private::Sealed for $primitive {}
71+
impl private::Sealed for $primitive {}
7472

7573
#[unstable(
7674
feature = "nonzero_internals",
7775
reason = "implementation detail which may disappear or be replaced at any time",
7876
issue = "none"
7977
)]
80-
unsafe impl const ZeroablePrimitive for $primitive {
78+
unsafe impl ZeroablePrimitive for $primitive {
8179
type NonZeroInner = private::$NonZeroInner;
8280
}
8381
)+

library/core/src/ops/arith.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@
7373
append_const_msg
7474
)]
7575
#[doc(alias = "+")]
76-
#[const_trait]
7776
pub trait Add<Rhs = Self> {
7877
/// The resulting type after applying the `+` operator.
7978
#[stable(feature = "rust1", since = "1.0.0")]
@@ -95,8 +94,7 @@ pub trait Add<Rhs = Self> {
9594
macro_rules! add_impl {
9695
($($t:ty)*) => ($(
9796
#[stable(feature = "rust1", since = "1.0.0")]
98-
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
99-
impl const Add for $t {
97+
impl Add for $t {
10098
type Output = $t;
10199

102100
#[inline]

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy