d69725d5d5
Since this only affects `PreCodegen MIR, and it would be nice for that to be resilient to permutations of things that don't affect the actual semantic behaviours.
139 lines
8.9 KiB
Rust
139 lines
8.9 KiB
Rust
// MIR for `unchecked_shr_signed_smaller` after PreCodegen
|
|
|
|
fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 {
|
|
debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:44: +0:45
|
|
debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:52: +0:53
|
|
let mut _0: i16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:63: +0:66
|
|
scope 1 (inlined core::num::<impl i16>::unchecked_shr) { // at $DIR/unchecked_shifts.rs:17:7: 17:23
|
|
debug self => _1; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
|
|
debug rhs => _2; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
|
|
let mut _3: (u32,); // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
let mut _4: u32; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
let mut _13: i16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
scope 2 {
|
|
scope 3 (inlined core::num::<impl i16>::unchecked_shr::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
debug x => _4; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
let mut _8: std::result::Result<i16, std::num::TryFromIntError>; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
let mut _11: std::option::Option<i16>; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
scope 4 {
|
|
scope 5 (inlined <u32 as TryInto<i16>>::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
debug self => _4; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL
|
|
scope 6 (inlined convert::num::<impl TryFrom<u32> for i16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL
|
|
debug u => _4; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
let mut _5: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
let mut _6: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
let mut _7: i16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
}
|
|
}
|
|
scope 7 (inlined Result::<i16, TryFromIntError>::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
debug self => _8; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
let mut _9: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
let _10: i16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
scope 8 {
|
|
debug x => _10; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
}
|
|
}
|
|
scope 9 (inlined #[track_caller] Option::<i16>::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
debug self => _11; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
let mut _12: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
let mut _14: &std::option::Option<i16>; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
scope 10 {
|
|
debug val => _13; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
}
|
|
scope 11 {
|
|
scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL
|
|
scope 14 {
|
|
scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope 12 (inlined Option::<i16>::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL
|
|
debug self => _14; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_13); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageLive(_3); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
_3 = (_2,); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageLive(_4); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
_4 = move (_3.0: u32); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageLive(_11); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageLive(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageLive(_6); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
StorageLive(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
_5 = const 32767_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
_6 = Gt(_4, move _5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
StorageDead(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
switchInt(move _6) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
}
|
|
|
|
bb1: {
|
|
StorageLive(_7); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
_7 = _4 as i16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
_8 = Result::<i16, TryFromIntError>::Ok(move _7); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
StorageDead(_7); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
}
|
|
|
|
bb2: {
|
|
_8 = Result::<i16, TryFromIntError>::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
// mir::Constant
|
|
// + span: no-location
|
|
// + literal: Const { ty: TryFromIntError, val: Value(<ZST>) }
|
|
goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
}
|
|
|
|
bb3: {
|
|
StorageDead(_6); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
|
|
StorageLive(_10); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
_9 = discriminant(_8); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
switchInt(move _9) -> [0: bb4, 1: bb5, otherwise: bb9]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
}
|
|
|
|
bb4: {
|
|
_10 = move ((_8 as Ok).0: i16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
_11 = Option::<i16>::Some(move _10); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
}
|
|
|
|
bb5: {
|
|
_11 = Option::<i16>::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
}
|
|
|
|
bb6: {
|
|
StorageDead(_10); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageDead(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageLive(_14); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
_12 = discriminant(_11); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
switchInt(move _12) -> [1: bb7, otherwise: bb9]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
}
|
|
|
|
bb7: {
|
|
_13 = move ((_11 as Some).0: i16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
|
|
StorageDead(_14); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageDead(_11); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageDead(_4); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
StorageDead(_3); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
|
|
_0 = unchecked_shr::<i16>(_1, move _13) -> [return: bb8, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
|
|
// mir::Constant
|
|
// + span: $SRC_DIR/core/src/num/int_macros.rs:LL:COL
|
|
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i16, i16) -> i16 {unchecked_shr::<i16>}, val: Value(<ZST>) }
|
|
}
|
|
|
|
bb8: {
|
|
StorageDead(_13); // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
|
|
return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2
|
|
}
|
|
|
|
bb9: {
|
|
unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
|
}
|
|
}
|