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§
- Maybe
Uninitialized 🔒Locals - A dataflow analysis that tracks locals that are maybe uninitialized.
- SsaLocals 🔒
- SsaVisitor 🔒
- Storage
Live 🔒Locals