- // 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::) { scope 2 (inlined NonNull::::dangling) { let mut _3: std::num::NonZero; scope 3 { scope 5 (inlined std::ptr::Alignment::as_nonzero) { } scope 6 (inlined NonNull::::without_provenance) { scope 7 { } scope 8 (inlined NonZero::::get) { } scope 9 (inlined std::ptr::without_provenance::) { scope 10 (inlined without_provenance_mut::) { } } } } scope 4 (inlined std::ptr::Alignment::of::) { } } scope 11 (inlined NonNull::::as_ptr) { } } scope 12 (inlined Foo::::cmp_ptr) { let mut _4: *const u8; let mut _5: *mut u8; let mut _6: *const u8; scope 13 (inlined std::ptr::eq::) { } } bb0: { StorageLive(_1); StorageLive(_2); StorageLive(_3); - _3 = const std::ptr::Alignment::of::::{constant#0} as std::num::NonZero (Transmute); - _2 = copy _3 as *mut u8 (Transmute); + _3 = const NonZero::(core::num::niche_types::NonZeroUsizeInner(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; } }