A data type representing SSA definitions.
We distinguish five kinds of SSA definitions:
- Explicit definitions wrapping a
VarDefnode in the CFG.
- Implicit initializations of locals (including
arguments) at the start of a function, which do not correspond directly to CFG nodes.
- Pseudo-definitions for captured variables at the beginning of
the capturing function as well as after
yieldexpressions and calls.
- Phi nodes.
- Refinement nodes at points in the CFG where additional information about a variable becomes available, which may constrain the set of its potential values.
SSA definitions are only introduced where necessary. In particular, unreachable code has no SSA definitions associated with it, and neither have dead assignments (that is, assignments whose value is never read).