Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Amanieu/183f034864c71a580b2f3347abc5b83d to your computer and use it in GitHub Desktop.
Save Amanieu/183f034864c71a580b2f3347abc5b83d to your computer and use it in GitHub Desktop.
This gist exceeds the recommended number of files (~10). To access all files, please clone this gist.
// MIR for `call_once` after AddMovesForPackedDrops
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` before AddMovesForPackedDrops
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` after Derefer
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` before Derefer
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` after RemoveNoopLandingPads
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb2 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` before RemoveNoopLandingPads
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` after SimplifyCfg-make_shim
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` before SimplifyCfg-make_shim
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb2 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` after AddCallGuards
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` before AddCallGuards
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` after AbortUnwindingCalls
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` before AbortUnwindingCalls
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` after PhaseChange-Runtime(Optimized)
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `call_once` before PhaseChange-Runtime(Optimized)
fn call_once(_1: fn(), _2: ()) -> <fn() as FnOnce<()>>::Output {
let mut _0: <fn() as std::ops::FnOnce<()>>::Output; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
bb0: {
_0 = move _1() -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ops/function.rs:248:5: 248:71
}
}
// MIR for `std::ptr::drop_in_place` after AddMovesForPackedDrops
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
goto -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` before AddMovesForPackedDrops
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
goto -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` after Derefer
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
goto -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` before Derefer
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
goto -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` after RemoveNoopLandingPads
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
goto -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb2 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` before RemoveNoopLandingPads
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
goto -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` after SimplifyCfg-make_shim
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` before SimplifyCfg-make_shim
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
goto -> bb1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb1: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
bb2 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` after AddCallGuards
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` before AddCallGuards
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` after AbortUnwindingCalls
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` before AbortUnwindingCalls
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` after PhaseChange-Runtime(Optimized)
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `std::ptr::drop_in_place` before PhaseChange-Runtime(Optimized)
fn std::ptr::drop_in_place(_1: *mut T) -> () {
let mut _0: (); // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
bb0: {
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/ptr/mod.rs:487:1: 487:56
}
}
// MIR for `imm8` 0 mir_map
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` 0 nll
| Free Region Mapping
| '_#0r | Global | ['_#0r, '_#1r]
| '_#1r | Local | ['_#1r]
|
| Inferred Region Values
| '_#0r | U0 | {bb0[0..=8], bb1[0..=8], bb2[0], '_#0r, '_#1r}
| '_#1r | U0 | {bb0[0..=8], bb1[0..=8], bb2[0], '_#1r}
| '_#2r | U0 | {}
|
| Inference Constraints
| '_#0r live at {bb0[0..=8], bb1[0..=8], bb2[0]}
| '_#1r live at {bb0[0..=8], bb1[0..=8], bb2[0]}
|
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
digraph RegionInferenceContext {
r0[label="\'_#0r"][shape="box"];
r1[label="\'_#1r"][shape="box"];
r2[label="\'_#2r"][shape="box"];
}
digraph RegionInferenceContext {
r0[label="ConstraintSccIndex(0) = [\'_#1r]"][shape="box"];
r1[label="ConstraintSccIndex(1) = [\'_#2r]"][shape="box"];
r2[label="ConstraintSccIndex(2) = [\'_#0r]"][shape="box"];
r2 -> r0[label=""];
r2 -> r1[label=""];
}
// MIR for `imm8` 0 renumber
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after PromoteTemps
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before PromoteTemps
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after SimplifyCfg-initial
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before SimplifyCfg-initial
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after SanityCheck
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before SanityCheck
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after SimplifyCfg-promote-consts
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before SimplifyCfg-promote-consts
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after RemoveFalseEdges
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before RemoveFalseEdges
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after SimplifyConstCondition-initial
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before SimplifyConstCondition-initial
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after RemoveNoopLandingPads
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before RemoveNoopLandingPads
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> [success: bb1, unwind: bb2]; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after CleanupNonCodegenStatements
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
nop; // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before CleanupNonCodegenStatements
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
FakeRead(ForLet(None), _2); // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after SimplifyCfg-early-opt
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyCfg-early-opt
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
nop; // scope 0 at test.rs:3:9: 3:16
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after Derefer
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before Derefer
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after PhaseChange-Analysis(PostCleanup)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before PhaseChange-Analysis(PostCleanup)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after AddCallGuards
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before AddCallGuards
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after ElaborateDrops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before ElaborateDrops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after AbortUnwindingCalls
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before AbortUnwindingCalls
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after AddMovesForPackedDrops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before AddMovesForPackedDrops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after ElaborateBoxDerefs
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before ElaborateBoxDerefs
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after StateTransform
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before StateTransform
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after Deaggregator
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before Deaggregator
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after PhaseChange-Runtime(Initial)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before PhaseChange-Runtime(Initial)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after ElaborateBoxDerefs
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before ElaborateBoxDerefs
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after LowerIntrinsics
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before LowerIntrinsics
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyCfg-elaborate-drops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyCfg-elaborate-drops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after PhaseChange-Runtime(PostCleanup)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before PhaseChange-Runtime(PostCleanup)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after RevealAll
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before RevealAll
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after LowerSliceLenCalls
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before LowerSliceLenCalls
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after UnreachablePropagation
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before UnreachablePropagation
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after UninhabitedEnumBranching
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before UninhabitedEnumBranching
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyCfg-after-uninhabited-enum-branching
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyCfg-after-uninhabited-enum-branching
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after Inline
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before Inline
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after RemoveStorageMarkers
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before RemoveStorageMarkers
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after RemoveZsts
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before RemoveZsts
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after RemoveUnneededDrops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before RemoveUnneededDrops
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after InstCombine
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before InstCombine
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after ConstProp
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before ConstProp
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyConstCondition-after-const-prop
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyConstCondition-after-const-prop
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyComparisonIntegral
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyComparisonIntegral
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyArmIdentity
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyArmIdentity
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyBranchSame
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyBranchSame
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after DeadStoreElimination
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before DeadStoreElimination
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyConstCondition-final
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyConstCondition-final
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after RemoveNoopLandingPads
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` before RemoveNoopLandingPads
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyCfg-final
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyCfg-final
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
bb2 (cleanup): {
resume; // scope 0 at test.rs:2:1: 6:2
}
}
// MIR for `imm8` after RenameReturnPlace
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before RenameReturnPlace
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:2:24: 2:27
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _2; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:3:9: 3:16
_2 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_2 = BitOr(_2, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = _2; // scope 1 at test.rs:5:5: 5:8
StorageDead(_2); // scope 0 at test.rs:6:1: 6:2
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after SimplifyLocals
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _4: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _5: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_2); // scope 1 at test.rs:4:12: 4:27
StorageLive(_3); // scope 1 at test.rs:4:12: 4:20
StorageLive(_4); // scope 1 at test.rs:4:13: 4:14
_4 = _1; // scope 1 at test.rs:4:13: 4:14
_5 = CheckedShr(_4, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_5.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_3 = move (_5.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_4); // scope 1 at test.rs:4:19: 4:20
_2 = BitAnd(move _3, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _2); // scope 1 at test.rs:4:5: 4:27
StorageDead(_2); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before SimplifyLocals
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:3:9: 3:16
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _4: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _5: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _6: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_3); // scope 1 at test.rs:4:12: 4:27
StorageLive(_4); // scope 1 at test.rs:4:12: 4:20
StorageLive(_5); // scope 1 at test.rs:4:13: 4:14
_5 = _1; // scope 1 at test.rs:4:13: 4:14
_6 = CheckedShr(_5, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_6.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_4 = move (_6.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_5); // scope 1 at test.rs:4:19: 4:20
_3 = BitAnd(move _4, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_4); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _3); // scope 1 at test.rs:4:5: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after AddCallGuards
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _4: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _5: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_2); // scope 1 at test.rs:4:12: 4:27
StorageLive(_3); // scope 1 at test.rs:4:12: 4:20
StorageLive(_4); // scope 1 at test.rs:4:13: 4:14
_4 = _1; // scope 1 at test.rs:4:13: 4:14
_5 = CheckedShr(_4, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_5.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_3 = move (_5.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_4); // scope 1 at test.rs:4:19: 4:20
_2 = BitAnd(move _3, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _2); // scope 1 at test.rs:4:5: 4:27
StorageDead(_2); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before AddCallGuards
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _4: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _5: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_2); // scope 1 at test.rs:4:12: 4:27
StorageLive(_3); // scope 1 at test.rs:4:12: 4:20
StorageLive(_4); // scope 1 at test.rs:4:13: 4:14
_4 = _1; // scope 1 at test.rs:4:13: 4:14
_5 = CheckedShr(_4, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_5.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_3 = move (_5.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_4); // scope 1 at test.rs:4:19: 4:20
_2 = BitAnd(move _3, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _2); // scope 1 at test.rs:4:5: 4:27
StorageDead(_2); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after PhaseChange-Runtime(Optimized)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _4: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _5: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_2); // scope 1 at test.rs:4:12: 4:27
StorageLive(_3); // scope 1 at test.rs:4:12: 4:20
StorageLive(_4); // scope 1 at test.rs:4:13: 4:14
_4 = _1; // scope 1 at test.rs:4:13: 4:14
_5 = CheckedShr(_4, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_5.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_3 = move (_5.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_4); // scope 1 at test.rs:4:19: 4:20
_2 = BitAnd(move _3, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _2); // scope 1 at test.rs:4:5: 4:27
StorageDead(_2); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before PhaseChange-Runtime(Optimized)
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _4: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _5: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_2); // scope 1 at test.rs:4:12: 4:27
StorageLive(_3); // scope 1 at test.rs:4:12: 4:20
StorageLive(_4); // scope 1 at test.rs:4:13: 4:14
_4 = _1; // scope 1 at test.rs:4:13: 4:14
_5 = CheckedShr(_4, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_5.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_3 = move (_5.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_4); // scope 1 at test.rs:4:19: 4:20
_2 = BitAnd(move _3, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _2); // scope 1 at test.rs:4:5: 4:27
StorageDead(_2); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` after PreCodegen
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _4: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _5: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_2); // scope 1 at test.rs:4:12: 4:27
StorageLive(_3); // scope 1 at test.rs:4:12: 4:20
StorageLive(_4); // scope 1 at test.rs:4:13: 4:14
_4 = _1; // scope 1 at test.rs:4:13: 4:14
_5 = CheckedShr(_4, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_5.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_3 = move (_5.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_4); // scope 1 at test.rs:4:19: 4:20
_2 = BitAnd(move _3, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _2); // scope 1 at test.rs:4:5: 4:27
StorageDead(_2); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `imm8` before PreCodegen
fn imm8(_1: u32) -> u32 {
debug x => _1; // in scope 0 at test.rs:2:13: 2:14
let mut _0: u32; // return place in scope 0 at test.rs:3:9: 3:16
let mut _2: u32; // in scope 0 at test.rs:4:12: 4:27
let mut _3: u32; // in scope 0 at test.rs:4:12: 4:20
let mut _4: u32; // in scope 0 at test.rs:4:13: 4:14
let mut _5: (u32, bool); // in scope 0 at test.rs:4:12: 4:20
scope 1 {
debug out => _0; // in scope 1 at test.rs:3:9: 3:16
}
bb0: {
_0 = const 0_u32; // scope 0 at test.rs:3:19: 3:23
StorageLive(_2); // scope 1 at test.rs:4:12: 4:27
StorageLive(_3); // scope 1 at test.rs:4:12: 4:20
StorageLive(_4); // scope 1 at test.rs:4:13: 4:14
_4 = _1; // scope 1 at test.rs:4:13: 4:14
_5 = CheckedShr(_4, const 0_i32); // scope 1 at test.rs:4:12: 4:20
assert(!move (_5.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb1; // scope 1 at test.rs:4:12: 4:20
}
bb1: {
_3 = move (_5.0: u32); // scope 1 at test.rs:4:12: 4:20
StorageDead(_4); // scope 1 at test.rs:4:19: 4:20
_2 = BitAnd(move _3, const 255_u32); // scope 1 at test.rs:4:12: 4:27
StorageDead(_3); // scope 1 at test.rs:4:26: 4:27
_0 = BitOr(_0, move _2); // scope 1 at test.rs:4:5: 4:27
StorageDead(_2); // scope 1 at test.rs:4:26: 4:27
return; // scope 0 at test.rs:6:2: 6:2
}
}
// MIR for `inner` 0 mir_map
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` 0 nll
| Free Region Mapping
| '_#0r | Global | ['_#0r, '_#1r]
| '_#1r | Local | ['_#1r]
|
| Inferred Region Values
| '_#0r | U0 | {bb0[0..=5], bb1[0..=7], bb2[0..=5], bb3[0..=2], bb4[0..=6], bb5[0], '_#0r, '_#1r}
| '_#1r | U0 | {bb0[0..=5], bb1[0..=7], bb2[0..=5], bb3[0..=2], bb4[0..=6], bb5[0], '_#1r}
| '_#2r | U0 | {}
|
| Inference Constraints
| '_#0r live at {bb0[0..=5], bb1[0..=7], bb2[0..=5], bb3[0..=2], bb4[0..=6], bb5[0]}
| '_#1r live at {bb0[0..=5], bb1[0..=7], bb2[0..=5], bb3[0..=2], bb4[0..=6], bb5[0]}
|
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
digraph RegionInferenceContext {
r0[label="\'_#0r"][shape="box"];
r1[label="\'_#1r"][shape="box"];
r2[label="\'_#2r"][shape="box"];
}
digraph RegionInferenceContext {
r0[label="ConstraintSccIndex(0) = [\'_#1r]"][shape="box"];
r1[label="ConstraintSccIndex(1) = [\'_#2r]"][shape="box"];
r2[label="ConstraintSccIndex(2) = [\'_#0r]"][shape="box"];
r2 -> r0[label=""];
r2 -> r1[label=""];
}
// MIR for `inner` 0 renumber
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after PromoteTemps
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before PromoteTemps
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after SimplifyCfg-initial
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before SimplifyCfg-initial
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after SanityCheck
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before SanityCheck
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after SimplifyCfg-promote-consts
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before SimplifyCfg-promote-consts
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after RemoveFalseEdges
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before RemoveFalseEdges
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after SimplifyConstCondition-initial
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before SimplifyConstCondition-initial
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after RemoveNoopLandingPads
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before RemoveNoopLandingPads
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> [return: bb1, unwind: bb5]; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb2, unwind: bb5]; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb3, unwind: bb5]; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> [return: bb4, unwind: bb5]; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after CleanupNonCodegenStatements
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before CleanupNonCodegenStatements
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after SimplifyCfg-early-opt
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyCfg-early-opt
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after Derefer
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before Derefer
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after PhaseChange-Analysis(PostCleanup)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before PhaseChange-Analysis(PostCleanup)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after AddCallGuards
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before AddCallGuards
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after ElaborateDrops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before ElaborateDrops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after AbortUnwindingCalls
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before AbortUnwindingCalls
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after AddMovesForPackedDrops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before AddMovesForPackedDrops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after ElaborateBoxDerefs
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before ElaborateBoxDerefs
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after StateTransform
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before StateTransform
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after Deaggregator
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before Deaggregator
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after PhaseChange-Runtime(Initial)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before PhaseChange-Runtime(Initial)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after ElaborateBoxDerefs
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before ElaborateBoxDerefs
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after LowerIntrinsics
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before LowerIntrinsics
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyCfg-elaborate-drops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyCfg-elaborate-drops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after PhaseChange-Runtime(PostCleanup)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before PhaseChange-Runtime(PostCleanup)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after RevealAll
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before RevealAll
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after LowerSliceLenCalls
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before LowerSliceLenCalls
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after UnreachablePropagation
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before UnreachablePropagation
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after UninhabitedEnumBranching
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before UninhabitedEnumBranching
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyCfg-after-uninhabited-enum-branching
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyCfg-after-uninhabited-enum-branching
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after Inline
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before Inline
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = imm8(move _5) -> bb1; // scope 0 at test.rs:10:5: 10:17
// mir::Constant
// + span: test.rs:10:5: 10:9
// + literal: Const { ty: fn(u32) -> u32 {imm8}, val: Value(<ZST>) }
}
bb1: {
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb2; // scope 0 at test.rs:10:32: 10:45
}
bb2: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb3; // scope 0 at test.rs:10:31: 10:57
}
bb3: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
_3 = core::num::<impl u32>::rotate_right(move _4, move _6) -> bb4; // scope 0 at test.rs:10:5: 10:58
// mir::Constant
// + span: test.rs:10:18: 10:30
// + literal: Const { ty: fn(u32, u32) -> u32 {core::num::<impl u32>::rotate_right}, val: Value(<ZST>) }
}
bb4: {
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after RemoveStorageMarkers
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before RemoveStorageMarkers
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after RemoveZsts
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before RemoveZsts
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after RemoveUnneededDrops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before RemoveUnneededDrops
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after InstCombine
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before InstCombine
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after ConstProp
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before ConstProp
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = _4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyConstCondition-after-const-prop
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyConstCondition-after-const-prop
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyComparisonIntegral
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyComparisonIntegral
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyArmIdentity
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyArmIdentity
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyBranchSame
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyBranchSame
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after DeadStoreElimination
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
nop; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
nop; // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
nop; // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
nop; // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before DeadStoreElimination
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
_4 = const 0_u32; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
_13 = move (_15.0: u32); // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
_12 = BitAnd(move _13, const 255_u32); // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
_4 = BitOr(_4, move _12); // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyConstCondition-final
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
nop; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
nop; // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
nop; // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
nop; // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyConstCondition-final
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
nop; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
nop; // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
nop; // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
nop; // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after RemoveNoopLandingPads
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
nop; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
nop; // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
nop; // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
nop; // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` before RemoveNoopLandingPads
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
nop; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
nop; // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
nop; // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
nop; // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyCfg-final
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyCfg-final
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
nop; // scope 1 at test.rs:3:19: 3:23
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
nop; // scope 2 at test.rs:4:12: 4:20
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
nop; // scope 2 at test.rs:4:12: 4:27
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
nop; // scope 2 at test.rs:4:5: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
bb5 (cleanup): {
resume; // scope 0 at test.rs:9:1: 11:2
}
}
// MIR for `inner` after RenameReturnPlace
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before RenameReturnPlace
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after SimplifyLocals
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _13: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _14: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _15: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:13: 4:14
_12 = _5; // scope 2 at test.rs:4:13: 4:14
_13 = CheckedShr(_12, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_13.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_14 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_15 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _14, move _15) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_12); // scope 2 at test.rs:4:19: 4:20
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before SimplifyLocals
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:12: 4:27
let mut _13: u32; // in scope 1 at test.rs:4:12: 4:20
let mut _14: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _15: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _16: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _17: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:12: 4:27
StorageLive(_13); // scope 2 at test.rs:4:12: 4:20
StorageLive(_14); // scope 2 at test.rs:4:13: 4:14
_14 = _5; // scope 2 at test.rs:4:13: 4:14
_15 = CheckedShr(_14, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_15.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_16 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_17 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _16, move _17) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_14); // scope 2 at test.rs:4:19: 4:20
StorageDead(_13); // scope 2 at test.rs:4:26: 4:27
StorageDead(_12); // scope 2 at test.rs:4:26: 4:27
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_17); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_16); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after AddCallGuards
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _13: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _14: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _15: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:13: 4:14
_12 = _5; // scope 2 at test.rs:4:13: 4:14
_13 = CheckedShr(_12, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_13.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_14 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_15 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _14, move _15) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_12); // scope 2 at test.rs:4:19: 4:20
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before AddCallGuards
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _13: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _14: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _15: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:13: 4:14
_12 = _5; // scope 2 at test.rs:4:13: 4:14
_13 = CheckedShr(_12, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_13.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_14 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_15 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _14, move _15) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_12); // scope 2 at test.rs:4:19: 4:20
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after PhaseChange-Runtime(Optimized)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _13: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _14: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _15: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:13: 4:14
_12 = _5; // scope 2 at test.rs:4:13: 4:14
_13 = CheckedShr(_12, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_13.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_14 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_15 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _14, move _15) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_12); // scope 2 at test.rs:4:19: 4:20
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before PhaseChange-Runtime(Optimized)
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _13: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _14: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _15: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:13: 4:14
_12 = _5; // scope 2 at test.rs:4:13: 4:14
_13 = CheckedShr(_12, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_13.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_14 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_15 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _14, move _15) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_12); // scope 2 at test.rs:4:19: 4:20
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` after PreCodegen
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _13: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _14: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _15: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:13: 4:14
_12 = _5; // scope 2 at test.rs:4:13: 4:14
_13 = CheckedShr(_12, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_13.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_14 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_15 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _14, move _15) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_12); // scope 2 at test.rs:4:19: 4:20
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `inner` before PreCodegen
fn inner(_1: u32) -> i64 {
debug fields => _1; // in scope 0 at test.rs:9:14: 9:20
let mut _0: i64; // return place in scope 0 at test.rs:9:30: 9:33
let mut _2: i32; // in scope 0 at test.rs:10:5: 10:65
let mut _3: u32; // in scope 0 at test.rs:10:5: 10:58
let mut _4: u32; // in scope 0 at test.rs:10:5: 10:17
let mut _5: u32; // in scope 0 at test.rs:10:10: 10:16
let mut _6: u32; // in scope 0 at test.rs:10:31: 10:57
let mut _7: u32; // in scope 0 at test.rs:10:31: 10:52
let mut _8: u32; // in scope 0 at test.rs:10:32: 10:45
let mut _9: u32; // in scope 0 at test.rs:10:33: 10:39
let mut _10: (u32, bool); // in scope 0 at test.rs:10:32: 10:45
let mut _11: (u32, bool); // in scope 0 at test.rs:10:31: 10:57
scope 1 (inlined imm8) { // at test.rs:10:5: 10:17
debug x => _5; // in scope 1 at test.rs:2:13: 2:14
let mut _12: u32; // in scope 1 at test.rs:4:13: 4:14
let mut _13: (u32, bool); // in scope 1 at test.rs:4:12: 4:20
scope 2 {
debug out => _4; // in scope 2 at test.rs:3:9: 3:16
}
}
scope 3 (inlined core::num::<impl u32>::rotate_right) { // at test.rs:10:5: 10:58
debug self => _4; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:35: 237:39
debug n => _6; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:237:41: 237:42
let mut _14: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
let mut _15: u32; // in scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
}
bb0: {
StorageLive(_2); // scope 0 at test.rs:10:5: 10:65
StorageLive(_3); // scope 0 at test.rs:10:5: 10:58
StorageLive(_4); // scope 0 at test.rs:10:5: 10:17
StorageLive(_5); // scope 0 at test.rs:10:10: 10:16
_5 = _1; // scope 0 at test.rs:10:10: 10:16
StorageLive(_12); // scope 2 at test.rs:4:13: 4:14
_12 = _5; // scope 2 at test.rs:4:13: 4:14
_13 = CheckedShr(_12, const 0_i32); // scope 2 at test.rs:4:12: 4:20
assert(!move (_13.1: bool), "attempt to shift right by `{}`, which would overflow", const 0_i32) -> bb3; // scope 2 at test.rs:4:12: 4:20
}
bb1: {
_8 = move (_10.0: u32); // scope 0 at test.rs:10:32: 10:45
StorageDead(_9); // scope 0 at test.rs:10:44: 10:45
_7 = BitAnd(move _8, const 15_u32); // scope 0 at test.rs:10:31: 10:52
StorageDead(_8); // scope 0 at test.rs:10:51: 10:52
_11 = CheckedShl(_7, const 1_i32); // scope 0 at test.rs:10:31: 10:57
assert(!move (_11.1: bool), "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at test.rs:10:31: 10:57
}
bb2: {
_6 = move (_11.0: u32); // scope 0 at test.rs:10:31: 10:57
StorageDead(_7); // scope 0 at test.rs:10:56: 10:57
StorageLive(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
_14 = const 0_u32; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:38: 238:42
StorageLive(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_15 = _6; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:44: 238:45
_3 = rotate_right::<u32>(move _14, move _15) -> bb4; // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:56
// mir::Constant
// + span: /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:13: 238:37
// + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::<u32>}, val: Value(<ZST>) }
}
bb3: {
StorageDead(_12); // scope 2 at test.rs:4:19: 4:20
StorageDead(_5); // scope 0 at test.rs:10:16: 10:17
StorageLive(_6); // scope 0 at test.rs:10:31: 10:57
StorageLive(_7); // scope 0 at test.rs:10:31: 10:52
StorageLive(_8); // scope 0 at test.rs:10:32: 10:45
StorageLive(_9); // scope 0 at test.rs:10:33: 10:39
_9 = _1; // scope 0 at test.rs:10:33: 10:39
_10 = CheckedShr(_9, const 8_i32); // scope 0 at test.rs:10:32: 10:45
assert(!move (_10.1: bool), "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at test.rs:10:32: 10:45
}
bb4: {
StorageDead(_15); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_14); // scope 3 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/core/src/num/uint_macros.rs:238:55: 238:56
StorageDead(_6); // scope 0 at test.rs:10:57: 10:58
StorageDead(_4); // scope 0 at test.rs:10:57: 10:58
_2 = move _3 as i32 (Misc); // scope 0 at test.rs:10:5: 10:65
StorageDead(_3); // scope 0 at test.rs:10:64: 10:65
_0 = move _2 as i64 (Misc); // scope 0 at test.rs:10:5: 10:72
StorageDead(_2); // scope 0 at test.rs:10:71: 10:72
return; // scope 0 at test.rs:11:2: 11:2
}
}
// MIR for `main::promoted[0]` after RemoveFalseEdges
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before RemoveFalseEdges
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after SimplifyConstCondition-initial
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before SimplifyConstCondition-initial
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after RemoveNoopLandingPads
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
bb1 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before RemoveNoopLandingPads
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after CleanupNonCodegenStatements
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
bb1 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before CleanupNonCodegenStatements
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
bb1 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after SimplifyCfg-early-opt
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before SimplifyCfg-early-opt
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
bb1 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after Derefer
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before Derefer
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after PhaseChange-Analysis(PostCleanup)
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before PhaseChange-Analysis(PostCleanup)
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after AddCallGuards
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before AddCallGuards
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after ElaborateDrops
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
bb1 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before ElaborateDrops
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after AbortUnwindingCalls
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before AbortUnwindingCalls
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
bb1 (cleanup): {
resume; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after AddMovesForPackedDrops
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before AddMovesForPackedDrops
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after ElaborateBoxDerefs
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before ElaborateBoxDerefs
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after StateTransform
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before StateTransform
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after Deaggregator
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before Deaggregator
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
_4 = std::fmt::rt::v1::Alignment::Unknown; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_5 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_6 = Implied; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_3 = FormatSpec { fill: const ' ', align: move _4, flags: const 4_u32, precision: move _5, width: move _6 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_2 = Argument { position: const 0_usize, format: move _3 }; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after PhaseChange-Runtime(Initial)
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before PhaseChange-Runtime(Initial)
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after ElaborateBoxDerefs
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before ElaborateBoxDerefs
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after LowerIntrinsics
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before LowerIntrinsics
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after SimplifyCfg-elaborate-drops
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before SimplifyCfg-elaborate-drops
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` after PhaseChange-Runtime(PostCleanup)
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[0]` before PhaseChange-Runtime(PostCleanup)
promoted[0] in main: &[Argument; 1] = {
let mut _0: &[std::fmt::rt::v1::Argument; 1]; // return place in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _1: [std::fmt::rt::v1::Argument; 1]; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _2: std::fmt::rt::v1::Argument; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _3: std::fmt::rt::v1::FormatSpec; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _4: std::fmt::rt::v1::Alignment; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _5: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
let mut _6: std::fmt::rt::v1::Count; // in scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
bb0: {
Deinit(_4); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_4) = 3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_5); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_5) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_6); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
discriminant(_6) = 2; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_3); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.0: char) = const ' '; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.1: std::fmt::rt::v1::Alignment) = move _4; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.2: u32) = const 4_u32; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.3: std::fmt::rt::v1::Count) = move _5; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_3.4: std::fmt::rt::v1::Count) = move _6; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
Deinit(_2); // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.0: usize) = const 0_usize; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
(_2.1: std::fmt::rt::v1::FormatSpec) = move _3; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_1 = [move _2]; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
_0 = &_1; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
return; // scope 0 at /rustc/b44197abb0b3ffe4908892e1e08ab1cd721ff3b9/library/std/src/macros.rs:130:28: 130:61
}
}
// MIR for `main::promoted[1]` after RemoveFalseEdges
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before RemoveFalseEdges
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after SimplifyConstCondition-initial
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before SimplifyConstCondition-initial
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after RemoveNoopLandingPads
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
bb1 (cleanup): {
resume; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before RemoveNoopLandingPads
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after CleanupNonCodegenStatements
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
bb1 (cleanup): {
resume; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before CleanupNonCodegenStatements
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
bb1 (cleanup): {
resume; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after SimplifyCfg-early-opt
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before SimplifyCfg-early-opt
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
bb1 (cleanup): {
resume; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after Derefer
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before Derefer
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after PhaseChange-Analysis(PostCleanup)
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before PhaseChange-Analysis(PostCleanup)
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after AddCallGuards
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before AddCallGuards
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after ElaborateDrops
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
bb1 (cleanup): {
resume; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before ElaborateDrops
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after AbortUnwindingCalls
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before AbortUnwindingCalls
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
bb1 (cleanup): {
resume; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after AddMovesForPackedDrops
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before AddMovesForPackedDrops
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after ElaborateBoxDerefs
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before ElaborateBoxDerefs
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after StateTransform
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before StateTransform
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after Deaggregator
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before Deaggregator
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after PhaseChange-Runtime(Initial)
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before PhaseChange-Runtime(Initial)
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after ElaborateBoxDerefs
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before ElaborateBoxDerefs
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after LowerIntrinsics
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before LowerIntrinsics
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` after SimplifyCfg-elaborate-drops
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
// MIR for `main::promoted[1]` before SimplifyCfg-elaborate-drops
promoted[1] in main: &[&str; 2] = {
let mut _0: &[&str; 2]; // return place in scope 0 at test.rs:15:14: 15:24
let mut _1: [&str; 2]; // in scope 0 at test.rs:15:14: 15:24
bb0: {
_1 = [const "", const "\n"]; // scope 0 at test.rs:15:14: 15:24
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
// mir::Constant
// + span: test.rs:15:14: 15:24
// + literal: Const { ty: &str, val: Value(Slice(..)) }
_0 = &_1; // scope 0 at test.rs:15:14: 15:24
return; // scope 0 at test.rs:15:14: 15:24
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment