// MIR for `demo_byte_add_thin` after runtime-optimized

fn demo_byte_add_thin(_1: *const u32, _2: usize) -> *const u32 {
    debug p => _1;
    debug n => _2;
    let mut _0: *const u32;
    scope 1 (inlined #[track_caller] std::ptr::const_ptr::<impl *const u32>::byte_add) {
        let mut _3: *const u8;
        let mut _4: *const u8;
        scope 2 (inlined std::ptr::const_ptr::<impl *const u32>::cast::<u8>) {
        }
        scope 3 (inlined #[track_caller] std::ptr::const_ptr::<impl *const u8>::add) {
        }
        scope 4 (inlined std::ptr::const_ptr::<impl *const u8>::with_metadata_of::<u32>) {
            scope 5 (inlined std::ptr::metadata::<u32>) {
            }
            scope 6 (inlined std::ptr::from_raw_parts::<u32, ()>) {
            }
        }
    }

    bb0: {
        StorageLive(_4);
        StorageLive(_3);
        _3 = copy _1 as *const u8 (PtrToPtr);
        _4 = Offset(copy _3, copy _2);
        StorageDead(_3);
        _0 = copy _4 as *const u32 (PtrToPtr);
        StorageDead(_4);
        return;
    }
}
