Liveness analysis is related to allocating registers. Two temporary values can fit in the same register if they’re never ‘live’ at the same time. A temporary is live if it holds a value that will be used in the future.
He talked about what Control-Flow Graphs are, they’re pretty obvious though. Draw lines between nodes, nodes are instructions in the program; no labels. Lines indicate control flow.
There’s a bunch of definitions on slide 143 which are then used later in equations etc.
How do you compute ‘Liveness’?
out(n) = set of in(s) where s is the 'successive' nodes
of n (note that because you work backwards, this
is the 'previous' ones.
The final node has no `out` bit.
in(n) = use(n) + (out(n) - def(n))
(where + is union and - is intersection)
Repeat this in a table until it is stable.