- // MIR for `discriminant` before LowerIntrinsics + // MIR for `discriminant` after LowerIntrinsics fn discriminant(_1: T) -> () { debug t => _1; let mut _0: (); let _2: ::Discriminant; let mut _3: &T; let _4: &T; let _5: u8; let mut _6: &i32; let _7: &i32; let _8: i32; let _9: u8; let mut _10: &(); let _11: &(); let _12: (); let _13: isize; let mut _14: &E; let _15: &E; let _16: E; let mut _17: &E; let mut _18: &(); let mut _19: &i32; bb0: { StorageLive(_2); StorageLive(_3); StorageLive(_4); _4 = &_1; _3 = &(*_4); - _2 = discriminant_value::(move _3) -> [return: bb1, unwind unreachable]; + _2 = discriminant((*_3)); + goto -> bb1; } bb1: { StorageDead(_3); StorageDead(_4); StorageDead(_2); StorageLive(_5); StorageLive(_6); StorageLive(_7); _19 = const discriminant::::promoted[2]; _7 = &(*_19); _6 = &(*_7); - _5 = discriminant_value::(move _6) -> [return: bb2, unwind unreachable]; + _5 = discriminant((*_6)); + goto -> bb2; } bb2: { StorageDead(_6); StorageDead(_7); StorageDead(_5); StorageLive(_9); StorageLive(_10); StorageLive(_11); _18 = const discriminant::::promoted[1]; _11 = &(*_18); _10 = &(*_11); - _9 = discriminant_value::<()>(move _10) -> [return: bb3, unwind unreachable]; + _9 = discriminant((*_10)); + goto -> bb3; } bb3: { StorageDead(_10); StorageDead(_11); StorageDead(_9); StorageLive(_13); StorageLive(_14); StorageLive(_15); _17 = const discriminant::::promoted[0]; _15 = &(*_17); _14 = &(*_15); - _13 = discriminant_value::(move _14) -> [return: bb4, unwind unreachable]; + _13 = discriminant((*_14)); + goto -> bb4; } bb4: { StorageDead(_14); StorageDead(_15); StorageDead(_13); _0 = const (); drop(_1) -> [return: bb5, unwind unreachable]; } bb5: { return; } }