- // MIR for `statics` before DataflowConstProp + // MIR for `statics` after DataflowConstProp fn statics() -> () { let mut _0: (); let _1: E; let mut _2: &E; let mut _4: isize; let mut _8: &&E; let mut _10: isize; scope 1 { debug e1 => _1; let _3: i32; let _5: i32; let _6: i32; scope 2 { debug x1 => _3; let _7: &E; scope 5 { debug e2 => _7; let _9: &i32; let _11: &i32; let _12: &i32; scope 6 { debug x2 => _9; } scope 7 { debug x21 => _11; } scope 8 { debug x22 => _12; } } } scope 3 { debug x11 => _5; } scope 4 { debug x12 => _6; } } bb0: { StorageLive(_1); StorageLive(_2); _2 = const {ALLOC0: &E}; - _1 = copy (*_2); + _1 = const E::V1(0_i32); StorageDead(_2); StorageLive(_3); - _4 = discriminant(_1); - switchInt(move _4) -> [0: bb3, 1: bb2, otherwise: bb1]; + _4 = const 0_isize; + switchInt(const 0_isize) -> [0: bb3, 1: bb2, otherwise: bb1]; } bb1: { unreachable; } bb2: { StorageLive(_6); _6 = copy ((_1 as V2).0: i32); _3 = copy _6; StorageDead(_6); goto -> bb4; } bb3: { StorageLive(_5); - _5 = copy ((_1 as V1).0: i32); - _3 = copy _5; + _5 = const 0_i32; + _3 = const 0_i32; StorageDead(_5); goto -> bb4; } bb4: { StorageLive(_7); StorageLive(_8); _8 = const {ALLOC1: &&E}; _7 = copy (*_8); StorageDead(_8); StorageLive(_9); _10 = discriminant((*_7)); switchInt(move _10) -> [0: bb6, 1: bb5, otherwise: bb1]; } bb5: { StorageLive(_12); _12 = &(((*_7) as V2).0: i32); _9 = &(*_12); StorageDead(_12); goto -> bb7; } bb6: { StorageLive(_11); _11 = &(((*_7) as V1).0: i32); _9 = copy _11; StorageDead(_11); goto -> bb7; } bb7: { _0 = const (); StorageDead(_9); StorageDead(_7); StorageDead(_3); StorageDead(_1); return; } } + ALLOC2 (size: 8, align: 4) { .. } + ALLOC1 (static: RC, size: 4, align: 4) { .. } - ALLOC2 (size: 8, align: 4) { .. } + ALLOC3 (size: 8, align: 4) { .. } ALLOC0 (static: statics::C, size: 8, align: 4) { .. }