0601f0c66d
This is just one part of the MCP, but it's the one that IMHO removes the most noise from the standard library code. Seems net simpler this way, since MIR already supported heterogeneous shifts anyway, and thus it's not more work for backends than before.
196 lines
5.4 KiB
Diff
196 lines
5.4 KiB
Diff
- // MIR for `unchecked` before LowerIntrinsics
|
|
+ // MIR for `unchecked` after LowerIntrinsics
|
|
|
|
fn unchecked(_1: i32, _2: i32, _3: u32) -> () {
|
|
debug a => _1;
|
|
debug b => _2;
|
|
debug c => _3;
|
|
let mut _0: ();
|
|
let _4: i32;
|
|
let mut _5: i32;
|
|
let mut _6: i32;
|
|
let mut _8: i32;
|
|
let mut _9: i32;
|
|
let mut _11: i32;
|
|
let mut _12: i32;
|
|
let mut _14: i32;
|
|
let mut _15: i32;
|
|
let mut _17: i32;
|
|
let mut _18: i32;
|
|
let mut _20: i32;
|
|
let mut _21: i32;
|
|
let mut _23: i32;
|
|
let mut _24: i32;
|
|
let mut _26: i32;
|
|
let mut _27: u32;
|
|
let mut _29: i32;
|
|
let mut _30: u32;
|
|
scope 1 {
|
|
debug _a => _4;
|
|
let _7: i32;
|
|
scope 2 {
|
|
debug _b => _7;
|
|
let _10: i32;
|
|
scope 3 {
|
|
debug _c => _10;
|
|
let _13: i32;
|
|
scope 4 {
|
|
debug _x => _13;
|
|
let _16: i32;
|
|
scope 5 {
|
|
debug _y => _16;
|
|
let _19: i32;
|
|
scope 6 {
|
|
debug _i => _19;
|
|
let _22: i32;
|
|
scope 7 {
|
|
debug _j => _22;
|
|
let _25: i32;
|
|
scope 8 {
|
|
debug _k => _25;
|
|
let _28: i32;
|
|
scope 9 {
|
|
debug _l => _28;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_4);
|
|
StorageLive(_5);
|
|
_5 = _1;
|
|
StorageLive(_6);
|
|
_6 = _2;
|
|
- _4 = unchecked_add::<i32>(move _5, move _6) -> [return: bb1, unwind unreachable];
|
|
+ _4 = AddUnchecked(move _5, move _6);
|
|
+ goto -> bb1;
|
|
}
|
|
|
|
bb1: {
|
|
StorageDead(_6);
|
|
StorageDead(_5);
|
|
StorageLive(_7);
|
|
StorageLive(_8);
|
|
_8 = _1;
|
|
StorageLive(_9);
|
|
_9 = _2;
|
|
- _7 = unchecked_sub::<i32>(move _8, move _9) -> [return: bb2, unwind unreachable];
|
|
+ _7 = SubUnchecked(move _8, move _9);
|
|
+ goto -> bb2;
|
|
}
|
|
|
|
bb2: {
|
|
StorageDead(_9);
|
|
StorageDead(_8);
|
|
StorageLive(_10);
|
|
StorageLive(_11);
|
|
_11 = _1;
|
|
StorageLive(_12);
|
|
_12 = _2;
|
|
- _10 = unchecked_mul::<i32>(move _11, move _12) -> [return: bb3, unwind unreachable];
|
|
+ _10 = MulUnchecked(move _11, move _12);
|
|
+ goto -> bb3;
|
|
}
|
|
|
|
bb3: {
|
|
StorageDead(_12);
|
|
StorageDead(_11);
|
|
StorageLive(_13);
|
|
StorageLive(_14);
|
|
_14 = _1;
|
|
StorageLive(_15);
|
|
_15 = _2;
|
|
- _13 = unchecked_div::<i32>(move _14, move _15) -> [return: bb4, unwind unreachable];
|
|
+ _13 = Div(move _14, move _15);
|
|
+ goto -> bb4;
|
|
}
|
|
|
|
bb4: {
|
|
StorageDead(_15);
|
|
StorageDead(_14);
|
|
StorageLive(_16);
|
|
StorageLive(_17);
|
|
_17 = _1;
|
|
StorageLive(_18);
|
|
_18 = _2;
|
|
- _16 = unchecked_rem::<i32>(move _17, move _18) -> [return: bb5, unwind unreachable];
|
|
+ _16 = Rem(move _17, move _18);
|
|
+ goto -> bb5;
|
|
}
|
|
|
|
bb5: {
|
|
StorageDead(_18);
|
|
StorageDead(_17);
|
|
StorageLive(_19);
|
|
StorageLive(_20);
|
|
_20 = _1;
|
|
StorageLive(_21);
|
|
_21 = _2;
|
|
- _19 = unchecked_shl::<i32, i32>(move _20, move _21) -> [return: bb6, unwind unreachable];
|
|
+ _19 = ShlUnchecked(move _20, move _21);
|
|
+ goto -> bb6;
|
|
}
|
|
|
|
bb6: {
|
|
StorageDead(_21);
|
|
StorageDead(_20);
|
|
StorageLive(_22);
|
|
StorageLive(_23);
|
|
_23 = _1;
|
|
StorageLive(_24);
|
|
_24 = _2;
|
|
- _22 = unchecked_shr::<i32, i32>(move _23, move _24) -> [return: bb7, unwind unreachable];
|
|
+ _22 = ShrUnchecked(move _23, move _24);
|
|
+ goto -> bb7;
|
|
}
|
|
|
|
bb7: {
|
|
StorageDead(_24);
|
|
StorageDead(_23);
|
|
StorageLive(_25);
|
|
StorageLive(_26);
|
|
_26 = _1;
|
|
StorageLive(_27);
|
|
_27 = _3;
|
|
- _25 = unchecked_shl::<i32, u32>(move _26, move _27) -> [return: bb8, unwind unreachable];
|
|
+ _25 = ShlUnchecked(move _26, move _27);
|
|
+ goto -> bb8;
|
|
}
|
|
|
|
bb8: {
|
|
StorageDead(_27);
|
|
StorageDead(_26);
|
|
StorageLive(_28);
|
|
StorageLive(_29);
|
|
_29 = _1;
|
|
StorageLive(_30);
|
|
_30 = _3;
|
|
- _28 = unchecked_shr::<i32, u32>(move _29, move _30) -> [return: bb9, unwind unreachable];
|
|
+ _28 = ShrUnchecked(move _29, move _30);
|
|
+ goto -> bb9;
|
|
}
|
|
|
|
bb9: {
|
|
StorageDead(_30);
|
|
StorageDead(_29);
|
|
_0 = const ();
|
|
StorageDead(_28);
|
|
StorageDead(_25);
|
|
StorageDead(_22);
|
|
StorageDead(_19);
|
|
StorageDead(_16);
|
|
StorageDead(_13);
|
|
StorageDead(_10);
|
|
StorageDead(_7);
|
|
StorageDead(_4);
|
|
return;
|
|
}
|
|
}
|
|
|