diff --git a/library/core/src/cmp.rs b/library/core/src/cmp.rs index 7581c6dd759c3..e3b7cf84920ea 100644 --- a/library/core/src/cmp.rs +++ b/library/core/src/cmp.rs @@ -1548,7 +1548,14 @@ mod impls { impl PartialOrd for $t { #[inline] fn partial_cmp(&self, other: &$t) -> Option { - Some(self.cmp(other)) + #[cfg(bootstrap)] + { + Some(self.cmp(other)) + } + #[cfg(not(bootstrap))] + { + Some(crate::intrinsics::three_way_compare(*self, *other)) + } } #[inline(always)] fn lt(&self, other: &$t) -> bool { (*self) < (*other) } @@ -1566,12 +1573,12 @@ mod impls { fn cmp(&self, other: &$t) -> Ordering { #[cfg(bootstrap)] { - // The order here is important to generate more optimal assembly. - // See for more info. - if *self < *other { Less } - else if *self == *other { Equal } - else { Greater } - } + // The order here is important to generate more optimal assembly. + // See for more info. + if *self < *other { Less } + else if *self == *other { Equal } + else { Greater } + } #[cfg(not(bootstrap))] { crate::intrinsics::three_way_compare(*self, *other) diff --git a/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir index 7ce2d229d5474..a6c644259124a 100644 --- a/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir @@ -16,24 +16,16 @@ fn ::partial_cmp(_1: &MultiField, _2: &M scope 2 (inlined std::cmp::impls::::partial_cmp) { debug self => _3; debug other => _4; + let mut _5: char; + let mut _6: char; let mut _7: std::cmp::Ordering; - scope 3 (inlined std::cmp::impls::::cmp) { - debug self => _3; - debug other => _4; - let mut _5: char; - let mut _6: char; - } } - scope 4 (inlined std::cmp::impls::::partial_cmp) { + scope 3 (inlined std::cmp::impls::::partial_cmp) { debug self => _10; debug other => _11; + let mut _12: i16; + let mut _13: i16; let mut _14: std::cmp::Ordering; - scope 5 (inlined std::cmp::impls::::cmp) { - debug self => _10; - debug other => _11; - let mut _12: i16; - let mut _13: i16; - } } bb0: {