\begin{algorithm}
        \caption{May-Forward-Analysis-Iterative}
        \begin{algorithmic}
        \INPUT CFG ($kill_B$ and $gen_B$ computed for each basic block $B$)
        \OUTPUT $IN[B]$ and $OUT[B]$ for each basic block $B$
        \STATE $OUT[ENTRY] = \empty$
        \FOR{\textbf{each} basic block $B\in V(CFG) - \{ENTRY\}$}
            \STATE $OUT[B] = \empty$
        \ENDFOR
        \REPEAT
            \FOR{\textbf{each} basic block $B\in V(CFG) - \{ENTRY\}$}
                \STATE $IN[B] = \bigcup\limits_{P\in pre(B)} OUT[P]$
                \STATE $OUT[B] = gen_B\cup (IN[B] - kill_B)$
            \ENDFOR
        \UNTIL{no changes to any $OUT[B]$ of basic block $B\in V(CFG) - \{ENTRY\}$ occur}
        \end{algorithmic}
        \end{algorithm}