// 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 *const T; let mut _3: *const std::ptr::NonNull; let mut _8: *const T; scope 2 { let _4: std::ptr::NonNull; let _9: usize; scope 3 { } scope 4 { scope 8 (inlined as PartialEq>::eq) { let mut _5: std::ptr::NonNull; scope 9 (inlined NonNull::::as_ptr) { let mut _6: *const T; } scope 10 (inlined NonNull::::as_ptr) { let mut _7: *const T; } } } scope 5 (inlined std::ptr::const_ptr::::addr) { scope 6 (inlined std::ptr::const_ptr::::cast::<()>) { } } scope 7 (inlined std::ptr::const_ptr::::cast::>) { } } } bb0: { StorageLive(_9); StorageLive(_8); StorageLive(_4); switchInt(const ::IS_ZST) -> [0: bb1, otherwise: bb2]; } bb1: { StorageLive(_3); StorageLive(_2); _2 = &raw const ((*_1).1: *const T); _3 = copy _2 as *const std::ptr::NonNull (PtrToPtr); StorageDead(_2); _4 = copy (*_3); StorageDead(_3); StorageLive(_6); StorageLive(_7); StorageLive(_5); _5 = copy ((*_1).0: std::ptr::NonNull); _6 = copy (_5.0: *const T); StorageDead(_5); _7 = copy (_4.0: *const T); _0 = Eq(copy _6, copy _7); StorageDead(_7); StorageDead(_6); goto -> bb3; } bb2: { _8 = copy ((*_1).1: *const T); _9 = copy _8 as usize (Transmute); _0 = Eq(copy _9, const 0_usize); goto -> bb3; } bb3: { StorageDead(_4); StorageDead(_8); StorageDead(_9); return; } }