Slightly simplify the iN::partial_cmp
MIR
This saves some debug and scope metadata in every single function that calls it. Normally wouldn't be worth it, but with the derives there's *so* many of these.
This commit is contained in:
parent
3da115a93b
commit
8d5977d6af
@ -1548,7 +1548,14 @@ mod impls {
|
|||||||
impl PartialOrd for $t {
|
impl PartialOrd for $t {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn partial_cmp(&self, other: &$t) -> Option<Ordering> {
|
fn partial_cmp(&self, other: &$t) -> Option<Ordering> {
|
||||||
Some(self.cmp(other))
|
#[cfg(bootstrap)]
|
||||||
|
{
|
||||||
|
Some(self.cmp(other))
|
||||||
|
}
|
||||||
|
#[cfg(not(bootstrap))]
|
||||||
|
{
|
||||||
|
Some(crate::intrinsics::three_way_compare(*self, *other))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn lt(&self, other: &$t) -> bool { (*self) < (*other) }
|
fn lt(&self, other: &$t) -> bool { (*self) < (*other) }
|
||||||
@ -1566,12 +1573,12 @@ mod impls {
|
|||||||
fn cmp(&self, other: &$t) -> Ordering {
|
fn cmp(&self, other: &$t) -> Ordering {
|
||||||
#[cfg(bootstrap)]
|
#[cfg(bootstrap)]
|
||||||
{
|
{
|
||||||
// The order here is important to generate more optimal assembly.
|
// The order here is important to generate more optimal assembly.
|
||||||
// See <https://github.com/rust-lang/rust/issues/63758> for more info.
|
// See <https://github.com/rust-lang/rust/issues/63758> for more info.
|
||||||
if *self < *other { Less }
|
if *self < *other { Less }
|
||||||
else if *self == *other { Equal }
|
else if *self == *other { Equal }
|
||||||
else { Greater }
|
else { Greater }
|
||||||
}
|
}
|
||||||
#[cfg(not(bootstrap))]
|
#[cfg(not(bootstrap))]
|
||||||
{
|
{
|
||||||
crate::intrinsics::three_way_compare(*self, *other)
|
crate::intrinsics::three_way_compare(*self, *other)
|
||||||
|
@ -16,24 +16,16 @@ fn <impl at $DIR/derived_ord.rs:6:10: 6:20>::partial_cmp(_1: &MultiField, _2: &M
|
|||||||
scope 2 (inlined std::cmp::impls::<impl PartialOrd for char>::partial_cmp) {
|
scope 2 (inlined std::cmp::impls::<impl PartialOrd for char>::partial_cmp) {
|
||||||
debug self => _3;
|
debug self => _3;
|
||||||
debug other => _4;
|
debug other => _4;
|
||||||
|
let mut _5: char;
|
||||||
|
let mut _6: char;
|
||||||
let mut _7: std::cmp::Ordering;
|
let mut _7: std::cmp::Ordering;
|
||||||
scope 3 (inlined std::cmp::impls::<impl Ord for char>::cmp) {
|
|
||||||
debug self => _3;
|
|
||||||
debug other => _4;
|
|
||||||
let mut _5: char;
|
|
||||||
let mut _6: char;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
scope 4 (inlined std::cmp::impls::<impl PartialOrd for i16>::partial_cmp) {
|
scope 3 (inlined std::cmp::impls::<impl PartialOrd for i16>::partial_cmp) {
|
||||||
debug self => _10;
|
debug self => _10;
|
||||||
debug other => _11;
|
debug other => _11;
|
||||||
|
let mut _12: i16;
|
||||||
|
let mut _13: i16;
|
||||||
let mut _14: std::cmp::Ordering;
|
let mut _14: std::cmp::Ordering;
|
||||||
scope 5 (inlined std::cmp::impls::<impl Ord for i16>::cmp) {
|
|
||||||
debug self => _10;
|
|
||||||
debug other => _11;
|
|
||||||
let mut _12: i16;
|
|
||||||
let mut _13: i16;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bb0: {
|
bb0: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user