| // WARNING: This is highly experimental output it's intended for stable-mir developers only. |
| // If you find a bug or want to improve the output open a issue at https://github.com/rust-lang/project-stable-mir. |
| fn foo(_1: i32) -> i32 { |
| let mut _0: i32; |
| let mut _2: (i32, bool); |
| debug i => _1; |
| bb0: { |
| _2 = CheckedAdd(_1, 1_i32); |
| assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", _1, 1_i32) -> [success: bb1, unwind continue]; |
| } |
| bb1: { |
| _0 = move (_2.0: i32); |
| return; |
| } |
| } |
| fn bar(_1: &mut Vec<i32>) -> Vec<i32> { |
| let mut _0: Vec<i32>; |
| let mut _2: Vec<i32>; |
| let mut _3: &Vec<i32>; |
| let _4: (); |
| let mut _5: &mut Vec<i32>; |
| debug vec => _1; |
| debug new_vec => _2; |
| bb0: { |
| _3 = &(*_1); |
| _2 = <Vec<i32> as Clone>::clone(move _3) -> [return: bb1, unwind continue]; |
| } |
| bb1: { |
| _5 = &mut _2; |
| _4 = Vec::<i32>::push(move _5, 1_i32) -> [return: bb2, unwind: bb3]; |
| } |
| bb2: { |
| _0 = move _2; |
| return; |
| } |
| bb3: { |
| drop(_2) -> [return: bb4, unwind terminate]; |
| } |
| bb4: { |
| resume; |
| } |
| } |
| fn demux(_1: u8) -> u8 { |
| let mut _0: u8; |
| debug input => _1; |
| bb0: { |
| switchInt(_1) -> [0: bb4, 1: bb3, 2: bb2, otherwise: bb1]; |
| } |
| bb1: { |
| _0 = 0_u8; |
| goto -> bb5; |
| } |
| bb2: { |
| _0 = 8_u8; |
| goto -> bb5; |
| } |
| bb3: { |
| _0 = 6_u8; |
| goto -> bb5; |
| } |
| bb4: { |
| _0 = 10_u8; |
| goto -> bb5; |
| } |
| bb5: { |
| return; |
| } |
| } |
| fn main() -> () { |
| let mut _0: (); |
| bb0: { |
| return; |
| } |
| } |