Entry → B1 → B2 → Exit; edges from if/while form the graph
OUT[n] = f_n(IN[n]); IN[n] = ⋂_{p ∈ preds(n)} OUT[p]
while worklist not empty: pick n; recompute IN/OUT; if changed, enqueue succ/pred
GEN/ KILL sets per block; OUT = GEN ∪ (IN − KILL)
Worklist over SSA uses; lattice {undef, const c, overdefined}