- // MIR for `main` before GVN + // MIR for `main` after GVN fn main() -> () { let mut _0: (); let _1: bool; let mut _2: *mut u8; scope 1 (inlined dangling_mut::) { let mut _3: usize; scope 2 (inlined align_of::) { } scope 3 (inlined without_provenance_mut::) { } } scope 4 (inlined Foo::::cmp_ptr) { let mut _4: *const u8; let mut _5: *mut u8; let mut _6: *const u8; scope 5 (inlined std::ptr::eq::) { } } bb0: { StorageLive(_1); StorageLive(_2); StorageLive(_3); - _3 = AlignOf(u8); - _2 = copy _3 as *mut u8 (Transmute); + _3 = const 1_usize; + _2 = const {0x1 as *mut u8}; StorageDead(_3); StorageLive(_4); StorageLive(_5); - _5 = copy _2; - _4 = copy _2 as *const u8 (PtrToPtr); + _5 = const {0x1 as *mut u8}; + _4 = const {0x1 as *const u8}; StorageDead(_5); StorageLive(_6); - _6 = const Foo::::SENTINEL as *const u8 (PtrToPtr); - _1 = Eq(copy _4, copy _6); + _6 = const {0x1 as *const u8}; + _1 = const true; StorageDead(_6); StorageDead(_4); StorageDead(_2); StorageDead(_1); _0 = const (); return; } }