// MIR for `test_complex` after built fn test_complex() -> () { let mut _0: (); let _1: (); let mut _2: E; let mut _3: isize; let mut _4: bool; let mut _5: bool; let mut _6: u8; let mut _7: Droppy; let mut _8: bool; let mut _9: u8; let mut _10: Droppy; let mut _11: bool; let mut _12: E; let mut _13: isize; bb0: { StorageLive(_1); StorageLive(_2); _2 = E::f() -> [return: bb1, unwind: bb34]; } bb1: { PlaceMention(_2); _3 = discriminant(_2); switchInt(move _3) -> [0: bb3, otherwise: bb2]; } bb2: { goto -> bb21; } bb3: { falseEdge -> [real: bb5, imaginary: bb2]; } bb4: { goto -> bb2; } bb5: { StorageLive(_4); _4 = always_true() -> [return: bb6, unwind: bb34]; } bb6: { switchInt(move _4) -> [0: bb8, otherwise: bb7]; } bb7: { StorageLive(_5); StorageLive(_6); StorageLive(_7); _7 = Droppy(const 0_u8); _6 = copy (_7.0: u8); _5 = Gt(move _6, const 0_u8); switchInt(move _5) -> [0: bb10, otherwise: bb9]; } bb8: { goto -> bb14; } bb9: { drop(_7) -> [return: bb11, unwind: bb34]; } bb10: { goto -> bb12; } bb11: { StorageDead(_7); StorageDead(_6); goto -> bb18; } bb12: { drop(_7) -> [return: bb13, unwind: bb34]; } bb13: { StorageDead(_7); StorageDead(_6); goto -> bb14; } bb14: { StorageLive(_8); StorageLive(_9); StorageLive(_10); _10 = Droppy(const 1_u8); _9 = copy (_10.0: u8); _8 = Gt(move _9, const 1_u8); switchInt(move _8) -> [0: bb16, otherwise: bb15]; } bb15: { drop(_10) -> [return: bb17, unwind: bb34]; } bb16: { goto -> bb19; } bb17: { StorageDead(_10); StorageDead(_9); goto -> bb18; } bb18: { _1 = const (); goto -> bb22; } bb19: { drop(_10) -> [return: bb20, unwind: bb34]; } bb20: { StorageDead(_10); StorageDead(_9); goto -> bb21; } bb21: { _1 = const (); goto -> bb22; } bb22: { StorageDead(_8); StorageDead(_5); StorageDead(_4); StorageDead(_2); StorageDead(_1); StorageLive(_11); _11 = always_true() -> [return: bb23, unwind: bb34]; } bb23: { switchInt(move _11) -> [0: bb25, otherwise: bb24]; } bb24: { goto -> bb32; } bb25: { goto -> bb26; } bb26: { StorageLive(_12); _12 = E::f() -> [return: bb27, unwind: bb34]; } bb27: { PlaceMention(_12); _13 = discriminant(_12); switchInt(move _13) -> [1: bb29, otherwise: bb28]; } bb28: { goto -> bb32; } bb29: { falseEdge -> [real: bb31, imaginary: bb28]; } bb30: { goto -> bb28; } bb31: { _0 = const (); goto -> bb33; } bb32: { _0 = const (); goto -> bb33; } bb33: { StorageDead(_11); StorageDead(_12); return; } bb34 (cleanup): { resume; } }