Skip to content

Commit 989660c

Browse files
committed
rename expose_addr to expose_provenance
1 parent 99c42d2 commit 989660c

File tree

49 files changed

+105
-99
lines changed

Some content is hidden

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

49 files changed

+105
-99
lines changed

compiler/rustc_borrowck/src/type_check/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2261,7 +2261,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
22612261
}
22622262
}
22632263

2264-
CastKind::PointerExposeAddress => {
2264+
CastKind::PointerExposeProvenance => {
22652265
let ty_from = op.ty(body, tcx);
22662266
let cast_ty_from = CastTy::from_ty(ty_from);
22672267
let cast_ty_to = CastTy::from_ty(*ty);
@@ -2271,7 +2271,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
22712271
span_mirbug!(
22722272
self,
22732273
rvalue,
2274-
"Invalid PointerExposeAddress cast {:?} -> {:?}",
2274+
"Invalid PointerExposeProvenance cast {:?} -> {:?}",
22752275
ty_from,
22762276
ty
22772277
)

compiler/rustc_codegen_cranelift/src/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ fn codegen_stmt<'tcx>(
649649
| CastKind::IntToFloat
650650
| CastKind::FnPtrToPtr
651651
| CastKind::PtrToPtr
652-
| CastKind::PointerExposeAddress
652+
| CastKind::PointerExposeProvenance
653653
| CastKind::PointerWithExposedProvenance,
654654
ref operand,
655655
to_ty,

compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,7 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
965965
});
966966
}
967967

968-
sym::simd_expose_addr | sym::simd_with_exposed_provenance | sym::simd_cast_ptr => {
968+
sym::simd_expose_provenance | sym::simd_with_exposed_provenance | sym::simd_cast_ptr => {
969969
intrinsic_args!(fx, args => (arg); intrinsic);
970970
ret.write_cvalue_transmute(fx, arg);
971971
}

compiler/rustc_codegen_llvm/src/intrinsic.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2111,7 +2111,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
21112111
return Ok(args[0].immediate());
21122112
}
21132113

2114-
if name == sym::simd_expose_addr {
2114+
if name == sym::simd_expose_provenance {
21152115
let (out_len, out_elem) = require_simd!(ret_ty, SimdReturn);
21162116
require!(
21172117
in_len == out_len,

compiler/rustc_codegen_ssa/src/mir/rvalue.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
405405
let cast = bx.cx().layout_of(self.monomorphize(mir_cast_ty));
406406

407407
let val = match *kind {
408-
mir::CastKind::PointerExposeAddress => {
408+
mir::CastKind::PointerExposeProvenance => {
409409
assert!(bx.cx().is_backend_immediate(cast));
410410
let llptr = operand.immediate();
411411
let llcast_ty = bx.cx().immediate_backend_type(cast);

compiler/rustc_const_eval/src/interpret/cast.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
3434
self.unsize_into(src, cast_layout, dest)?;
3535
}
3636

37-
CastKind::PointerExposeAddress => {
37+
CastKind::PointerExposeProvenance => {
3838
let src = self.read_immediate(src)?;
39-
let res = self.pointer_expose_address_cast(&src, cast_layout)?;
39+
let res = self.pointer_expose_provenance_cast(&src, cast_layout)?;
4040
self.write_immediate(*res, dest)?;
4141
}
4242

@@ -225,7 +225,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
225225
}
226226
}
227227

228-
pub fn pointer_expose_address_cast(
228+
pub fn pointer_expose_provenance_cast(
229229
&mut self,
230230
src: &ImmTy<'tcx, M::Provenance>,
231231
cast_to: TyAndLayout<'tcx>,

compiler/rustc_const_eval/src/transform/check_consts/check.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> {
544544
// Unsizing is implemented for CTFE.
545545
}
546546

547-
Rvalue::Cast(CastKind::PointerExposeAddress, _, _) => {
547+
Rvalue::Cast(CastKind::PointerExposeProvenance, _, _) => {
548548
self.check_op(ops::RawPtrToIntCast);
549549
}
550550
Rvalue::Cast(CastKind::PointerWithExposedProvenance, _, _) => {

compiler/rustc_const_eval/src/transform/validate.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,7 @@ impl<'a, 'tcx> Visitor<'tcx> for TypeChecker<'a, 'tcx> {
10771077
}
10781078
// FIXME: Add Checks for these
10791079
CastKind::PointerWithExposedProvenance
1080-
| CastKind::PointerExposeAddress
1080+
| CastKind::PointerExposeProvenance
10811081
| CastKind::PointerCoercion(_) => {}
10821082
CastKind::IntToInt | CastKind::IntToFloat => {
10831083
let input_valid = op_ty.is_integral() || op_ty.is_char() || op_ty.is_bool();

compiler/rustc_hir_analysis/src/check/intrinsic.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ pub fn check_intrinsic_type(
627627
sym::simd_cast
628628
| sym::simd_as
629629
| sym::simd_cast_ptr
630-
| sym::simd_expose_addr
630+
| sym::simd_expose_provenance
631631
| sym::simd_with_exposed_provenance => (2, 0, vec![param(0)], param(1)),
632632
sym::simd_bitmask => (2, 0, vec![param(0)], param(1)),
633633
sym::simd_select | sym::simd_select_bitmask => {

compiler/rustc_hir_typeck/messages.ftl

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ hir_typeck_lossy_provenance_int2ptr =
9191
hir_typeck_lossy_provenance_ptr2int =
9292
under strict provenance it is considered bad style to cast pointer `{$expr_ty}` to integer `{$cast_ty}`
9393
.suggestion = use `.addr()` to obtain the address of a pointer
94-
.help = if you can't comply with strict provenance and need to expose the pointer provenance you can use `.expose_addr()` instead
94+
.help = if you can't comply with strict provenance and need to expose the pointer provenance you can use `.expose_provenance()` instead
9595
9696
hir_typeck_method_call_on_unknown_raw_pointee =
9797
cannot call a method on a raw pointer with an unknown pointee type

compiler/rustc_lint_defs/src/builtin.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2797,17 +2797,17 @@ declare_lint! {
27972797
/// Since this cast is lossy, it is considered good style to use the
27982798
/// [`ptr::addr`] method instead, which has a similar effect, but doesn't
27992799
/// "expose" the pointer provenance. This improves optimisation potential.
2800-
/// See the docs of [`ptr::addr`] and [`ptr::expose_addr`] for more information
2800+
/// See the docs of [`ptr::addr`] and [`ptr::expose_provenance`] for more information
28012801
/// about exposing pointer provenance.
28022802
///
28032803
/// If your code can't comply with strict provenance and needs to expose
2804-
/// the provenance, then there is [`ptr::expose_addr`] as an escape hatch,
2804+
/// the provenance, then there is [`ptr::expose_provenance`] as an escape hatch,
28052805
/// which preserves the behaviour of `as usize` casts while being explicit
28062806
/// about the semantics.
28072807
///
28082808
/// [issue #95228]: https://github.com/rust-lang/rust/issues/95228
28092809
/// [`ptr::addr`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.addr
2810-
/// [`ptr::expose_addr`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.expose_addr
2810+
/// [`ptr::expose_provenance`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.expose_provenance
28112811
pub LOSSY_PROVENANCE_CASTS,
28122812
Allow,
28132813
"a lossy pointer to integer cast is used",

compiler/rustc_middle/src/mir/statement.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ impl<'tcx> Rvalue<'tcx> {
409409
// Pointer to int casts may be side-effects due to exposing the provenance.
410410
// While the model is undecided, we should be conservative. See
411411
// <https://www.ralfj.de/blog/2022/04/11/provenance-exposed.html>
412-
Rvalue::Cast(CastKind::PointerExposeAddress, _, _) => false,
412+
Rvalue::Cast(CastKind::PointerExposeProvenance, _, _) => false,
413413

414414
Rvalue::Use(_)
415415
| Rvalue::CopyForDeref(_)

compiler/rustc_middle/src/mir/syntax.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1309,8 +1309,8 @@ pub enum Rvalue<'tcx> {
13091309
pub enum CastKind {
13101310
/// An exposing pointer to address cast. A cast between a pointer and an integer type, or
13111311
/// between a function pointer and an integer type.
1312-
/// See the docs on `expose_addr` for more details.
1313-
PointerExposeAddress,
1312+
/// See the docs on `expose_provenance` for more details.
1313+
PointerExposeProvenance,
13141314
/// An address-to-pointer cast that picks up an exposed provenance.
13151315
/// See the docs on `with_exposed_provenance` for more details.
13161316
PointerWithExposedProvenance,

compiler/rustc_middle/src/ty/cast.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ pub fn mir_cast_kind<'tcx>(from_ty: Ty<'tcx>, cast_ty: Ty<'tcx>) -> mir::CastKin
8383
let cast = CastTy::from_ty(cast_ty);
8484
let cast_kind = match (from, cast) {
8585
(Some(CastTy::Ptr(_) | CastTy::FnPtr), Some(CastTy::Int(_))) => {
86-
mir::CastKind::PointerExposeAddress
86+
mir::CastKind::PointerExposeProvenance
8787
}
8888
(Some(CastTy::Int(_)), Some(CastTy::Ptr(_))) => mir::CastKind::PointerWithExposedProvenance,
8989
(_, Some(CastTy::DynStar)) => mir::CastKind::DynStar,

compiler/rustc_mir_transform/src/promote_consts.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ impl<'tcx> Validator<'_, 'tcx> {
434434
Rvalue::ThreadLocalRef(_) => return Err(Unpromotable),
435435

436436
// ptr-to-int casts are not possible in consts and thus not promotable
437-
Rvalue::Cast(CastKind::PointerExposeAddress, _, _) => return Err(Unpromotable),
437+
Rvalue::Cast(CastKind::PointerExposeProvenance, _, _) => return Err(Unpromotable),
438438

439439
// all other casts including int-to-ptr casts are fine, they just use the integer value
440440
// at pointer type.

compiler/rustc_mir_transform/src/shim.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ fn build_fn_ptr_addr_shim<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId, self_ty: Ty<'t
985985
let locals = local_decls_for_sig(&sig, span);
986986

987987
let source_info = SourceInfo::outermost(span);
988-
// FIXME: use `expose_addr` once we figure out whether function pointers have meaningful provenance.
988+
// FIXME: use `expose_provenance` once we figure out whether function pointers have meaningful provenance.
989989
let rvalue = Rvalue::Cast(
990990
CastKind::FnPtrToPtr,
991991
Operand::Move(Place::from(Local::new(1))),

compiler/rustc_smir/src/rustc_smir/convert/mir.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ impl<'tcx> Stable<'tcx> for mir::CastKind {
267267
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
268268
use rustc_middle::mir::CastKind::*;
269269
match self {
270-
PointerExposeAddress => stable_mir::mir::CastKind::PointerExposeAddress,
270+
PointerExposeProvenance => stable_mir::mir::CastKind::PointerExposeAddress,
271271
PointerWithExposedProvenance => stable_mir::mir::CastKind::PointerWithExposedProvenance,
272272
PointerCoercion(c) => stable_mir::mir::CastKind::PointerCoercion(c.stable(tables)),
273273
DynStar => stable_mir::mir::CastKind::DynStar,

compiler/rustc_span/src/symbol.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1659,7 +1659,7 @@ symbols! {
16591659
simd_cttz,
16601660
simd_div,
16611661
simd_eq,
1662-
simd_expose_addr,
1662+
simd_expose_provenance,
16631663
simd_extract,
16641664
simd_fabs,
16651665
simd_fcos,

compiler/stable_mir/src/mir/body.rs

+1
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,7 @@ pub enum PointerCoercion {
971971

972972
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
973973
pub enum CastKind {
974+
// FIXME(smir-rename): rename this to PointerExposeProvenance
974975
PointerExposeAddress,
975976
PointerWithExposedProvenance,
976977
PointerCoercion(PointerCoercion),

library/core/src/fmt/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2438,8 +2438,8 @@ impl Display for char {
24382438
#[stable(feature = "rust1", since = "1.0.0")]
24392439
impl<T: ?Sized> Pointer for *const T {
24402440
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
2441-
// Cast is needed here because `.expose_addr()` requires `T: Sized`.
2442-
pointer_fmt_inner((*self as *const ()).expose_addr(), f)
2441+
// Cast is needed here because `.expose_provenance()` requires `T: Sized`.
2442+
pointer_fmt_inner((*self as *const ()).expose_provenance(), f)
24432443
}
24442444
}
24452445

library/core/src/intrinsics/simd.rs

+6
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,10 @@ extern "rust-intrinsic" {
540540
/// `T` must be a vector of pointers.
541541
///
542542
/// `U` must be a vector of `usize` with the same length as `T`.
543+
#[cfg(not(bootstrap))]
544+
#[rustc_nounwind]
545+
pub fn simd_expose_provenance<T, U>(ptr: T) -> U;
546+
#[cfg(bootstrap)]
543547
#[rustc_nounwind]
544548
pub fn simd_expose_addr<T, U>(ptr: T) -> U;
545549

@@ -660,5 +664,7 @@ extern "rust-intrinsic" {
660664
pub fn simd_flog<T>(a: T) -> T;
661665
}
662666

667+
#[cfg(bootstrap)]
668+
pub use simd_expose_addr as simd_expose_provenance;
663669
#[cfg(bootstrap)]
664670
pub use simd_from_exposed_addr as simd_with_exposed_provenance;

library/core/src/ptr/const_ptr.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ impl<T: ?Sized> *const T {
136136
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
137137
#[deprecated(
138138
since = "1.67.0",
139-
note = "replaced by the `expose_addr` method, or update your code \
139+
note = "replaced by the `expose_provenance` method, or update your code \
140140
to follow the strict provenance rules using its APIs"
141141
)]
142142
#[inline(always)]
@@ -187,7 +187,7 @@ impl<T: ?Sized> *const T {
187187
///
188188
/// If using those APIs is not possible because there is no way to preserve a pointer with the
189189
/// required provenance, then Strict Provenance might not be for you. Use pointer-integer casts
190-
/// or [`expose_addr`][pointer::expose_addr] and [`with_exposed_provenance`][with_exposed_provenance]
190+
/// or [`expose_provenance`][pointer::expose_provenance] and [`with_exposed_provenance`][with_exposed_provenance]
191191
/// instead. However, note that this makes your code less portable and less amenable to tools
192192
/// that check for compliance with the Rust memory model.
193193
///
@@ -210,8 +210,8 @@ impl<T: ?Sized> *const T {
210210
unsafe { mem::transmute(self.cast::<()>()) }
211211
}
212212

213-
/// Gets the "address" portion of the pointer, and 'exposes' the "provenance" part for future
214-
/// use in [`with_exposed_provenance`][].
213+
/// Exposes the "provenance" part of the pointer for future use in
214+
/// [`with_exposed_provenance`][] and returns the "address" portion.
215215
///
216216
/// This is equivalent to `self as usize`, which semantically discards *provenance* and
217217
/// *address-space* information. Furthermore, this (like the `as` cast) has the implicit
@@ -238,7 +238,7 @@ impl<T: ?Sized> *const T {
238238
#[must_use]
239239
#[inline(always)]
240240
#[unstable(feature = "exposed_provenance", issue = "95228")]
241-
pub fn expose_addr(self) -> usize {
241+
pub fn expose_provenance(self) -> usize {
242242
// FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
243243
self.cast::<()>() as usize
244244
}

library/core/src/ptr/mod.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,8 @@
340340
//! clear where a satisfying unambiguous semantics can be defined for Exposed Provenance.
341341
//! Furthermore, Exposed Provenance will not work (well) with tools like [Miri] and [CHERI].
342342
//!
343-
//! Exposed Provenance is provided by the [`expose_addr`] and [`with_exposed_provenance`] methods, which
344-
//! are meant to replace `as` casts between pointers and integers. [`expose_addr`] is a lot like
343+
//! Exposed Provenance is provided by the [`expose_provenance`] and [`with_exposed_provenance`] methods,
344+
//! which are meant to replace `as` casts between pointers and integers. [`expose_provenance`] is a lot like
345345
//! [`addr`], but additionally adds the provenance of the pointer to a global list of 'exposed'
346346
//! provenances. (This list is purely conceptual, it exists for the purpose of specifying Rust but
347347
//! is not materialized in actual executions, except in tools like [Miri].) [`with_exposed_provenance`]
@@ -355,9 +355,9 @@
355355
//! there is *no* previously 'exposed' provenance that justifies the way the returned pointer will
356356
//! be used, the program has undefined behavior.
357357
//!
358-
//! Using [`expose_addr`] or [`with_exposed_provenance`] (or the `as` casts) means that code is
358+
//! Using [`expose_provenance`] or [`with_exposed_provenance`] (or the `as` casts) means that code is
359359
//! *not* following Strict Provenance rules. The goal of the Strict Provenance experiment is to
360-
//! determine how far one can get in Rust without the use of [`expose_addr`] and
360+
//! determine how far one can get in Rust without the use of [`expose_provenance`] and
361361
//! [`with_exposed_provenance`], and to encourage code to be written with Strict Provenance APIs only.
362362
//! Maximizing the amount of such code is a major win for avoiding specification complexity and to
363363
//! facilitate adoption of tools like [CHERI] and [Miri] that can be a big help in increasing the
@@ -374,7 +374,7 @@
374374
//! [`map_addr`]: pointer::map_addr
375375
//! [`addr`]: pointer::addr
376376
//! [`ptr::dangling`]: core::ptr::dangling
377-
//! [`expose_addr`]: pointer::expose_addr
377+
//! [`expose_provenance`]: pointer::expose_provenance
378378
//! [`with_exposed_provenance`]: with_exposed_provenance
379379
//! [Miri]: https://github.com/rust-lang/miri
380380
//! [CHERI]: https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/
@@ -663,7 +663,7 @@ pub const fn dangling_mut<T>() -> *mut T {
663663
///
664664
/// This is a more rigorously specified alternative to `addr as *const T`. The provenance of the
665665
/// returned pointer is that of *any* pointer that was previously exposed by passing it to
666-
/// [`expose_addr`][pointer::expose_addr], or a `ptr as usize` cast. In addition, memory which is
666+
/// [`expose_provenance`][pointer::expose_provenance], or a `ptr as usize` cast. In addition, memory which is
667667
/// outside the control of the Rust abstract machine (MMIO registers, for example) is always
668668
/// considered to be exposed, so long as this memory is disjoint from memory that will be used by
669669
/// the abstract machine such as the stack, heap, and statics.
@@ -711,7 +711,7 @@ where
711711
///
712712
/// This is a more rigorously specified alternative to `addr as *mut T`. The provenance of the
713713
/// returned pointer is that of *any* pointer that was previously passed to
714-
/// [`expose_addr`][pointer::expose_addr] or a `ptr as usize` cast. If there is no previously
714+
/// [`expose_provenance`][pointer::expose_provenance] or a `ptr as usize` cast. If there is no previously
715715
/// 'exposed' provenance that justifies the way this pointer will be used, the program has undefined
716716
/// behavior. Note that there is no algorithm that decides which provenance will be used. You can
717717
/// think of this as "guessing" the right provenance, and the guess will be "maximally in your

library/core/src/ptr/mut_ptr.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ impl<T: ?Sized> *mut T {
142142
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
143143
#[deprecated(
144144
since = "1.67.0",
145-
note = "replaced by the `expose_addr` method, or update your code \
145+
note = "replaced by the `expose_provenance` method, or update your code \
146146
to follow the strict provenance rules using its APIs"
147147
)]
148148
#[inline(always)]
@@ -194,7 +194,7 @@ impl<T: ?Sized> *mut T {
194194
///
195195
/// If using those APIs is not possible because there is no way to preserve a pointer with the
196196
/// required provenance, then Strict Provenance might not be for you. Use pointer-integer casts
197-
/// or [`expose_addr`][pointer::expose_addr] and [`with_exposed_provenance`][with_exposed_provenance]
197+
/// or [`expose_provenance`][pointer::expose_provenance] and [`with_exposed_provenance`][with_exposed_provenance]
198198
/// instead. However, note that this makes your code less portable and less amenable to tools
199199
/// that check for compliance with the Rust memory model.
200200
///
@@ -217,8 +217,8 @@ impl<T: ?Sized> *mut T {
217217
unsafe { mem::transmute(self.cast::<()>()) }
218218
}
219219

220-
/// Gets the "address" portion of the pointer, and 'exposes' the "provenance" part for future
221-
/// use in [`with_exposed_provenance`][].
220+
/// Exposes the "provenance" part of the pointer for future use in
221+
/// [`with_exposed_provenance`][] and returns the "address" portion.
222222
///
223223
/// This is equivalent to `self as usize`, which semantically discards *provenance* and
224224
/// *address-space* information. Furthermore, this (like the `as` cast) has the implicit
@@ -242,10 +242,9 @@ impl<T: ?Sized> *mut T {
242242
/// API and its claimed semantics are part of [Exposed Provenance][super#exposed-provenance].
243243
///
244244
/// [`with_exposed_provenance_mut`]: with_exposed_provenance_mut
245-
#[must_use]
246245
#[inline(always)]
247246
#[unstable(feature = "exposed_provenance", issue = "95228")]
248-
pub fn expose_addr(self) -> usize {
247+
pub fn expose_provenance(self) -> usize {
249248
// FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
250249
self.cast::<()>() as usize
251250
}

0 commit comments

Comments
 (0)