@@ -3969,6 +3969,21 @@ pub const fn is_val_statically_known<T: Copy>(_arg: T) -> bool {
39693969 false
39703970}
39713971
3972+ #[ rustc_nounwind]
3973+ #[ inline]
3974+ #[ rustc_intrinsic]
3975+ #[ rustc_intrinsic_const_stable_indirect]
3976+ #[ rustc_allow_const_fn_unstable( const_swap_nonoverlapping) ] // this is anyway not called since CTFE implements the intrinsic
3977+ #[ cfg( bootstrap) ]
3978+ pub const unsafe fn typed_swap < T > ( x : * mut T , y : * mut T ) {
3979+ // SAFETY: The caller provided single non-overlapping items behind
3980+ // pointers, so swapping them with `count: 1` is fine.
3981+ unsafe { ptr:: swap_nonoverlapping ( x, y, 1 ) } ;
3982+ }
3983+
3984+ #[ cfg( bootstrap) ]
3985+ pub use typed_swap as typed_swap_nonoverlapping;
3986+
39723987/// Non-overlapping *typed* swap of a single value.
39733988///
39743989/// The codegen backends will replace this with a better implementation when
@@ -3982,10 +3997,10 @@ pub const fn is_val_statically_known<T: Copy>(_arg: T) -> bool {
39823997#[ rustc_nounwind]
39833998#[ inline]
39843999#[ rustc_intrinsic]
3985- // Const-unstable because `swap_nonoverlapping` is const-unstable.
39864000#[ rustc_intrinsic_const_stable_indirect]
39874001#[ rustc_allow_const_fn_unstable( const_swap_nonoverlapping) ] // this is anyway not called since CTFE implements the intrinsic
3988- pub const unsafe fn typed_swap < T > ( x : * mut T , y : * mut T ) {
4002+ #[ cfg( not( bootstrap) ) ]
4003+ pub const unsafe fn typed_swap_nonoverlapping < T > ( x : * mut T , y : * mut T ) {
39894004 // SAFETY: The caller provided single non-overlapping items behind
39904005 // pointers, so swapping them with `count: 1` is fine.
39914006 unsafe { ptr:: swap_nonoverlapping ( x, y, 1 ) } ;
0 commit comments