Algorithm 4.2 May-Forward-Analysis-Worklist

Input: CFG (killBkill_B and genBgen_B computed for each basic block BB)

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

1:OUT[ENTRY]=OUT[ENTRY] = \empty

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

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

4:end for

5:Let WorklistWorklist be a Set of all basic blocks.

6:while WorklistWorklist is not empty do

7:Pick a basic block BB from WorklistWorklist.

8:temp=OUT[B]temp = OUT[B]

9:IN[B]=Ppre(B)OUT[P]IN[B] = \bigcup\limits_{P\in pre(B)} OUT[P]

10:OUT[B]=genB(IN[B]killB)OUT[B] = gen_B\cup (IN[B] - kill_B)

11:if tempOUT[B]temp \ne OUT[B] then

12:Add all successors of BB to WorklistWorklist.

13:end if

14:end while