Consider the following Three Address code sample for solving the questions:
100: t1 = y+2
101: initial = x/t1
102: limit = 10
103: if i > j goto 105
104: goto 111
105: if num > b goto 107
106: goto 111
107: num = limit-1
108: b = y+2
109: i = i - num
110: goto 103
111: j = i - num
112: k= j+b

This solution explains how to build a control flow graph (CFG) representing the execution path of a given Three Address Code (TAC) snippet. We will analyze the provided TAC step-by-step to identify basic blocks and the control flow between them.
First, let's break down the provided TAC sequence and understand the control flow:
Basic blocks are sequences of consecutive statements executed together. Control enters at the start and leaves at the end without branching within the block.
The identified basic blocks are:
The directed edges show the possible transitions between blocks:
This derived structure, including the sequence, conditional decision points (nodes 103 and 105), the exit paths (leading to node 111), and the loop back to node 103, matches the graph shown in Option 1.
The correct flow graph is:
Consider the control flow graph shown in the figure.

Which one of the following options correctly lists the set of redundant expressions (common subexpressions) in the basic blocks B4 and B5?
Note: All the variables are integers.
Consider the control flow graph given below.
Which one of the following options is the set of live variables at the exit point of each basic block?