Skip to main content

find_rust_call_tuples

Function find_rust_call_tuples 

Source
fn find_rust_call_tuples<'tcx>(
    tcx: TyCtxt<'tcx>,
    body: &Body<'tcx>,
) -> DenseBitSet<Local>
Expand description

Search for tuple locals passed to calls using the “rust-call” ABI.

For rust-call ABI calls, caller-side MIR passes the logical arguments as a tuple operand. We want to avoid remapping other locals into fields of that tuple, especially if one of those locals is borrowed.

Since the tuple itself is never borrowed, it is trivial for LLVM alias analysis to see that accesses to one argument do not affect the others, but merging the arguments into tuple fields from the start can hide that independence.