// 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: bb31]; } bb1: { PlaceMention(_2); _3 = discriminant(_2); switchInt(move _3) -> [0: bb2, otherwise: bb3]; } bb2: { falseEdge -> [real: bb4, imaginary: bb3]; } bb3: { goto -> bb19; } bb4: { StorageLive(_4); _4 = always_true() -> [return: bb5, unwind: bb31]; } bb5: { switchInt(move _4) -> [0: bb7, otherwise: bb6]; } bb6: { StorageLive(_5); StorageLive(_6); StorageLive(_7); _7 = Droppy(const 0_u8); _6 = (_7.0: u8); _5 = Gt(move _6, const 0_u8); switchInt(move _5) -> [0: bb9, otherwise: bb8]; } bb7: { goto -> bb13; } bb8: { drop(_7) -> [return: bb10, unwind: bb31]; } bb9: { goto -> bb11; } bb10: { StorageDead(_7); StorageDead(_6); goto -> bb16; } bb11: { drop(_7) -> [return: bb12, unwind: bb31]; } bb12: { StorageDead(_7); StorageDead(_6); goto -> bb13; } bb13: { StorageLive(_8); StorageLive(_9); StorageLive(_10); _10 = Droppy(const 1_u8); _9 = (_10.0: u8); _8 = Gt(move _9, const 1_u8); switchInt(move _8) -> [0: bb15, otherwise: bb14]; } bb14: { drop(_10) -> [return: bb16, unwind: bb31]; } bb15: { goto -> bb17; } bb16: { StorageDead(_10); StorageDead(_9); _1 = const (); goto -> bb20; } bb17: { drop(_10) -> [return: bb18, unwind: bb31]; } bb18: { StorageDead(_10); StorageDead(_9); goto -> bb19; } bb19: { _1 = const (); goto -> bb20; } bb20: { StorageDead(_8); StorageDead(_5); StorageDead(_4); StorageDead(_2); StorageDead(_1); StorageLive(_11); _11 = always_true() -> [return: bb21, unwind: bb31]; } bb21: { switchInt(move _11) -> [0: bb23, otherwise: bb22]; } bb22: { goto -> bb29; } bb23: { goto -> bb24; } bb24: { StorageLive(_12); _12 = E::f() -> [return: bb25, unwind: bb31]; } bb25: { PlaceMention(_12); _13 = discriminant(_12); switchInt(move _13) -> [1: bb27, otherwise: bb26]; } bb26: { goto -> bb29; } bb27: { falseEdge -> [real: bb28, imaginary: bb26]; } bb28: { _0 = const (); goto -> bb30; } bb29: { _0 = const (); goto -> bb30; } bb30: { StorageDead(_11); StorageDead(_12); return; } bb31 (cleanup): { resume; } }