// MIR for `slice_iter_generic_is_empty` after PreCodegen fn slice_iter_generic_is_empty(_1: &std::slice::Iter<'_, T>) -> bool { debug it => _1; let mut _0: bool; scope 1 (inlined as ExactSizeIterator>::is_empty) { let mut _2: *const T; let mut _7: *const T; scope 2 { let _3: std::ptr::NonNull; let _8: usize; scope 3 { } scope 4 { scope 7 (inlined as PartialEq>::eq) { let mut _4: std::ptr::NonNull; let mut _5: *mut T; let mut _6: *mut T; scope 8 (inlined NonNull::::as_ptr) { } scope 9 (inlined NonNull::::as_ptr) { } } } scope 5 (inlined std::ptr::const_ptr::::addr) { scope 6 (inlined std::ptr::const_ptr::::cast::<()>) { } } } } bb0: { StorageLive(_8); StorageLive(_7); StorageLive(_3); switchInt(const ::IS_ZST) -> [0: bb1, otherwise: bb2]; } bb1: { StorageLive(_2); _2 = copy ((*_1).1: *const T); _3 = move _2 as std::ptr::NonNull (Transmute); StorageDead(_2); StorageLive(_5); StorageLive(_4); _4 = copy ((*_1).0: std::ptr::NonNull); _5 = copy _4 as *mut T (Transmute); StorageDead(_4); StorageLive(_6); _6 = copy _3 as *mut T (Transmute); _0 = Eq(move _5, move _6); StorageDead(_6); StorageDead(_5); goto -> bb3; } bb2: { _7 = copy ((*_1).1: *const T); _8 = copy _7 as usize (Transmute); _0 = Eq(copy _8, const 0_usize); goto -> bb3; } bb3: { StorageDead(_3); StorageDead(_7); StorageDead(_8); return; } }