File tree Expand file tree Collapse file tree 2 files changed +7
-8
lines changed Expand file tree Collapse file tree 2 files changed +7
-8
lines changed Original file line number Diff line number Diff line change @@ -2628,13 +2628,15 @@ pub const fn bswap<T: Copy>(x: T) -> T;
26282628#[ rustc_intrinsic]
26292629pub const fn bitreverse < T : Copy > ( x : T ) -> T ;
26302630
2631- /// Does a three-way comparison between the two integer arguments.
2631+ /// Does a three-way comparison between the two arguments,
2632+ /// which must be of character or integer (signed or unsigned) type.
26322633///
2633- /// This is included as an intrinsic as it's useful to let it be one thing
2634- /// in MIR, rather than the multiple checks and switches that make its IR
2635- /// large and difficult to optimize.
2634+ /// This was originally added because it greatly simplified the MIR in `cmp`
2635+ /// implementations, and then LLVM 20 added a backend intrinsic for it too.
26362636///
26372637/// The stabilized version of this intrinsic is [`Ord::cmp`].
2638+ #[ rustc_intrinsic_const_stable_indirect]
2639+ #[ rustc_nounwind]
26382640#[ rustc_intrinsic]
26392641pub const fn three_way_compare < T : Copy > ( lhs : T , rhss : T ) -> crate :: cmp:: Ordering ;
26402642
Original file line number Diff line number Diff line change @@ -3571,10 +3571,7 @@ macro_rules! int_impl {
35713571 // so delegate it to `Ord` which is already producing -1/0/+1
35723572 // exactly like we need and can be the place to deal with the complexity.
35733573
3574- // FIXME(const-hack): replace with cmp
3575- if self < 0 { -1 }
3576- else if self == 0 { 0 }
3577- else { 1 }
3574+ crate :: intrinsics:: three_way_compare( self , 0 ) as Self
35783575 }
35793576
35803577 /// Returns `true` if `self` is positive and `false` if the number is zero or
You can’t perform that action at this time.
0 commit comments