\begin{algorithm}
\caption{Live-Variables-Analysis}
\begin{algorithmic}
\INPUT CFG ($def_B$ and $use_B$ computed for each basic block $B$)
\OUTPUT $IN[B]$ and $OUT[B]$ for each basic block $B$
\STATE $IN[EXIT] = \empty$
\FOR{\textbf{each} basic block $B\in V(CFG) - \{EXIT\}$}
\STATE $IN[B] = \empty$
\ENDFOR
\REPEAT
\FOR{\textbf{each} basic block $B\in V(CFG) - \{EXIT\}$}
\STATE $OUT[B] = \bigcup\limits_{S \in suc(B)} IN[S]$
\STATE $IN[B] = use_B \cup (OUT[B] - def_B)$
\ENDFOR
\UNTIL{no changes to any $IN[B]$ of basic block $B\in V(CFG) - \{EXIT\}$ occur}
\end{algorithmic}
\end{algorithm}