- // MIR for `aggregate` before JumpThreading + // MIR for `aggregate` after JumpThreading fn aggregate() -> u8 { let mut _0: u8; let _1: u8; let _2: u8; let mut _3: (u8, u8); let mut _4: bool; let mut _5: u8; scope 1 { debug a => _1; debug b => _2; } bb0: { StorageLive(_3); _3 = const aggregate::FOO; StorageLive(_1); _1 = copy (_3.0: u8); StorageLive(_2); _2 = copy (_3.1: u8); StorageDead(_3); StorageLive(_4); StorageLive(_5); _5 = copy _1; _4 = Eq(move _5, const 7_u8); - switchInt(move _4) -> [0: bb2, otherwise: bb1]; + goto -> bb2; } bb1: { StorageDead(_5); _0 = copy _2; goto -> bb3; } bb2: { StorageDead(_5); _0 = copy _1; goto -> bb3; } bb3: { StorageDead(_4); StorageDead(_2); StorageDead(_1); return; } }