Skip to main content

Module ssa

Module ssa 

Source
Expand description

We denote as “SSA” the set of locals that verify the following properties: 1/ They are only assigned-to once, either as a function parameter, or in an assign statement; 2/ This single assignment dominates all uses;

As we do not track indirect assignments, a local that has its address taken (via a borrow or raw borrow operator) is considered non-SSA. However, it is UB to modify through an immutable borrow of a Freeze local. Those can still be considered to be SSA.

Re-exports§

use rustc_data_structures::graph::dominators::Dominators; 🔒
use rustc_index::bit_set::DenseBitSet; 🔒
use rustc_index::IndexSlice; 🔒
use rustc_index::IndexVec; 🔒
use rustc_middle::middle::resolve_bound_vars::Set1; 🔒
use rustc_middle::ty; 🔒
use rustc_middle::ty::TyCtxt; 🔒
use rustc_mir_dataflow::Analysis; 🔒
use rustc_span::bug; 🔒
use tracing::debug; 🔒
use tracing::instrument; 🔒
use tracing::instrument; 🔒
use tracing::trace; 🔒
use rustc_middle::mir::visit::*; 🔒
use rustc_middle::mir::*; 🔒

Structs§

MaybeUninitializedLocals 🔒
A dataflow analysis that tracks locals that are maybe uninitialized.
SsaLocals 🔒
SsaVisitor 🔒
StorageLiveLocals 🔒

Functions§

compute_copy_classes 🔒