|
| 1 | +// MIR for `shift_signed` after built |
| 2 | + |
| 3 | +fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128; 3]) { |
| 4 | + debug small => _1; // in scope 0 at $DIR/shifts.rs:+0:17: +0:22 |
| 5 | + debug big => _2; // in scope 0 at $DIR/shifts.rs:+0:28: +0:31 |
| 6 | + debug a => _3; // in scope 0 at $DIR/shifts.rs:+0:39: +0:40 |
| 7 | + debug b => _4; // in scope 0 at $DIR/shifts.rs:+0:46: +0:47 |
| 8 | + debug c => _5; // in scope 0 at $DIR/shifts.rs:+0:54: +0:55 |
| 9 | + let mut _0: ([i8; 3], [u128; 3]); // return place in scope 0 at $DIR/shifts.rs:+0:66: +0:86 |
| 10 | + let mut _6: [i8; 3]; // in scope 0 at $DIR/shifts.rs:+2:9: +2:45 |
| 11 | + let mut _7: i8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 12 | + let mut _8: i8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:15 |
| 13 | + let mut _9: i8; // in scope 0 at $DIR/shifts.rs:+2:19: +2:20 |
| 14 | + let mut _10: i8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 15 | + let mut _11: bool; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 16 | + let mut _12: i8; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 17 | + let mut _13: i8; // in scope 0 at $DIR/shifts.rs:+2:22: +2:27 |
| 18 | + let mut _14: i32; // in scope 0 at $DIR/shifts.rs:+2:31: +2:32 |
| 19 | + let mut _15: i32; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 20 | + let mut _16: bool; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 21 | + let mut _17: i8; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 22 | + let mut _18: i8; // in scope 0 at $DIR/shifts.rs:+2:34: +2:39 |
| 23 | + let mut _19: i128; // in scope 0 at $DIR/shifts.rs:+2:43: +2:44 |
| 24 | + let mut _20: i128; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 25 | + let mut _21: bool; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 26 | + let mut _22: [u128; 3]; // in scope 0 at $DIR/shifts.rs:+3:9: +3:39 |
| 27 | + let mut _23: u128; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 28 | + let mut _24: u128; // in scope 0 at $DIR/shifts.rs:+3:10: +3:13 |
| 29 | + let mut _25: i8; // in scope 0 at $DIR/shifts.rs:+3:17: +3:18 |
| 30 | + let mut _26: i8; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 31 | + let mut _27: bool; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 32 | + let mut _28: u128; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 33 | + let mut _29: u128; // in scope 0 at $DIR/shifts.rs:+3:20: +3:23 |
| 34 | + let mut _30: i32; // in scope 0 at $DIR/shifts.rs:+3:27: +3:28 |
| 35 | + let mut _31: i32; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 36 | + let mut _32: bool; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 37 | + let mut _33: u128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 38 | + let mut _34: u128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:33 |
| 39 | + let mut _35: i128; // in scope 0 at $DIR/shifts.rs:+3:37: +3:38 |
| 40 | + let mut _36: i128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 41 | + let mut _37: bool; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 42 | + |
| 43 | + bb0: { |
| 44 | + StorageLive(_6); // scope 0 at $DIR/shifts.rs:+2:9: +2:45 |
| 45 | + StorageLive(_7); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 46 | + StorageLive(_8); // scope 0 at $DIR/shifts.rs:+2:10: +2:15 |
| 47 | + _8 = _1; // scope 0 at $DIR/shifts.rs:+2:10: +2:15 |
| 48 | + StorageLive(_9); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 |
| 49 | + _9 = _3; // scope 0 at $DIR/shifts.rs:+2:19: +2:20 |
| 50 | + _10 = BitAnd(_9, const -8_i8); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 51 | + _11 = Ne(move _10, const 0_i8); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 52 | + assert(!move _11, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 53 | + } |
| 54 | + |
| 55 | + bb1: { |
| 56 | + _7 = Shr(move _8, move _9); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 |
| 57 | + StorageDead(_9); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 |
| 58 | + StorageDead(_8); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 |
| 59 | + StorageLive(_12); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 60 | + StorageLive(_13); // scope 0 at $DIR/shifts.rs:+2:22: +2:27 |
| 61 | + _13 = _1; // scope 0 at $DIR/shifts.rs:+2:22: +2:27 |
| 62 | + StorageLive(_14); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 |
| 63 | + _14 = _4; // scope 0 at $DIR/shifts.rs:+2:31: +2:32 |
| 64 | + _15 = BitAnd(_14, const -8_i32); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 65 | + _16 = Ne(move _15, const 0_i32); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 66 | + assert(!move _16, "attempt to shift right by `{}`, which would overflow", _14) -> [success: bb2, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 67 | + } |
| 68 | + |
| 69 | + bb2: { |
| 70 | + _12 = Shr(move _13, move _14); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 |
| 71 | + StorageDead(_14); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 |
| 72 | + StorageDead(_13); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 |
| 73 | + StorageLive(_17); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 74 | + StorageLive(_18); // scope 0 at $DIR/shifts.rs:+2:34: +2:39 |
| 75 | + _18 = _1; // scope 0 at $DIR/shifts.rs:+2:34: +2:39 |
| 76 | + StorageLive(_19); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 |
| 77 | + _19 = _5; // scope 0 at $DIR/shifts.rs:+2:43: +2:44 |
| 78 | + _20 = BitAnd(_19, const -8_i128); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 79 | + _21 = Ne(move _20, const 0_i128); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 80 | + assert(!move _21, "attempt to shift right by `{}`, which would overflow", _19) -> [success: bb3, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 81 | + } |
| 82 | + |
| 83 | + bb3: { |
| 84 | + _17 = Shr(move _18, move _19); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 |
| 85 | + StorageDead(_19); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 |
| 86 | + StorageDead(_18); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 |
| 87 | + _6 = [move _7, move _12, move _17]; // scope 0 at $DIR/shifts.rs:+2:9: +2:45 |
| 88 | + StorageDead(_17); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 |
| 89 | + StorageDead(_12); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 |
| 90 | + StorageDead(_7); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 |
| 91 | + StorageLive(_22); // scope 0 at $DIR/shifts.rs:+3:9: +3:39 |
| 92 | + StorageLive(_23); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 93 | + StorageLive(_24); // scope 0 at $DIR/shifts.rs:+3:10: +3:13 |
| 94 | + _24 = _2; // scope 0 at $DIR/shifts.rs:+3:10: +3:13 |
| 95 | + StorageLive(_25); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 |
| 96 | + _25 = _3; // scope 0 at $DIR/shifts.rs:+3:17: +3:18 |
| 97 | + _26 = BitAnd(_25, const i8::MIN); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 98 | + _27 = Ne(move _26, const 0_i8); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 99 | + assert(!move _27, "attempt to shift left by `{}`, which would overflow", _25) -> [success: bb4, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 100 | + } |
| 101 | + |
| 102 | + bb4: { |
| 103 | + _23 = Shl(move _24, move _25); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 |
| 104 | + StorageDead(_25); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 |
| 105 | + StorageDead(_24); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 |
| 106 | + StorageLive(_28); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 107 | + StorageLive(_29); // scope 0 at $DIR/shifts.rs:+3:20: +3:23 |
| 108 | + _29 = _2; // scope 0 at $DIR/shifts.rs:+3:20: +3:23 |
| 109 | + StorageLive(_30); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 |
| 110 | + _30 = _4; // scope 0 at $DIR/shifts.rs:+3:27: +3:28 |
| 111 | + _31 = BitAnd(_30, const -128_i32); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 112 | + _32 = Ne(move _31, const 0_i32); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 113 | + assert(!move _32, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb5, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 114 | + } |
| 115 | + |
| 116 | + bb5: { |
| 117 | + _28 = Shl(move _29, move _30); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 |
| 118 | + StorageDead(_30); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 |
| 119 | + StorageDead(_29); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 |
| 120 | + StorageLive(_33); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 121 | + StorageLive(_34); // scope 0 at $DIR/shifts.rs:+3:30: +3:33 |
| 122 | + _34 = _2; // scope 0 at $DIR/shifts.rs:+3:30: +3:33 |
| 123 | + StorageLive(_35); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 |
| 124 | + _35 = _5; // scope 0 at $DIR/shifts.rs:+3:37: +3:38 |
| 125 | + _36 = BitAnd(_35, const -128_i128); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 126 | + _37 = Ne(move _36, const 0_i128); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 127 | + assert(!move _37, "attempt to shift left by `{}`, which would overflow", _35) -> [success: bb6, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 128 | + } |
| 129 | + |
| 130 | + bb6: { |
| 131 | + _33 = Shl(move _34, move _35); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 |
| 132 | + StorageDead(_35); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 |
| 133 | + StorageDead(_34); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 |
| 134 | + _22 = [move _23, move _28, move _33]; // scope 0 at $DIR/shifts.rs:+3:9: +3:39 |
| 135 | + StorageDead(_33); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 |
| 136 | + StorageDead(_28); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 |
| 137 | + StorageDead(_23); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 |
| 138 | + _0 = (move _6, move _22); // scope 0 at $DIR/shifts.rs:+1:5: +4:6 |
| 139 | + StorageDead(_22); // scope 0 at $DIR/shifts.rs:+4:5: +4:6 |
| 140 | + StorageDead(_6); // scope 0 at $DIR/shifts.rs:+4:5: +4:6 |
| 141 | + return; // scope 0 at $DIR/shifts.rs:+5:2: +5:2 |
| 142 | + } |
| 143 | + |
| 144 | + bb7 (cleanup): { |
| 145 | + resume; // scope 0 at $DIR/shifts.rs:+0:1: +5:2 |
| 146 | + } |
| 147 | +} |
0 commit comments