Algorithm 3.2 Live-Variables-Analysis

Input: CFG (defBdef_B and useBuse_B computed for each basic block BB)

Output: IN[B]IN[B] and OUT[B]OUT[B] for each basic block BB

1:IN[EXIT]=IN[EXIT] = \empty

2:for each basic block BV(CFG){EXIT}B\in V(CFG) - \{EXIT\} do

3:IN[B]=IN[B] = \empty

4:end for

5:repeat

6:for each basic block BV(CFG){EXIT}B\in V(CFG) - \{EXIT\} do

7:OUT[B]=Ssuc(B)IN[S]OUT[B] = \bigcup\limits_{S \in suc(B)} IN[S]

8:IN[B]=useB(OUT[B]defB)IN[B] = use_B \cup (OUT[B] - def_B)

9:end for

10:until no changes to any IN[B]IN[B] of basic block BV(CFG){EXIT}B\in V(CFG) - \{EXIT\} occur