Skip to main content

scan_block

Function scan_block 

Source
fn scan_block<'tcx>(
    body: &mut Body<'tcx>,
    block: BasicBlock,
    used_after: &mut DenseBitSet<Local>,
    borrowed: &DenseBitSet<Local>,
) -> ControlFlow<()>
Expand description

Scan a block backward while the return-tail invariant still holds.

The invariant is that a whole-local Copy can be changed to a Move only if this path has no later access to that local’s allocation before returning, and no later operation whose observable behavior could depend on ending an address-observed local’s allocation early. used_after tracks those later local-allocation accesses.