Consider the following intermediate program in three address code
p = a - b q = p * c p = u * v q = p + q
Which one of the following corresponds to a static single assignment from the above code
p1 = a - b q 1 = p1 * c p1 = u * v q1 = p1 + q1
p3 = a - b q4 = p3 * c p4 = u * v q5 = p4 + q4
p 1 = a - b q1 = p2 * c p3 = u * v q2 = p4 + q3
p1 = a - b q1 = p * c p2 = u * v q2 = p + q
Explanation: According to Static Single Assignment
- A variable cannot be used more than once in the LHS
- A variable should be initialized atmost once.
Now looking at the given options
- a – code violates condition 1 as p1 is initialized again in this statement: p1 = u * v
- c- code is not valid as q1 = p2 * c , q2 = p4 + q3 – In these statements p2, p4, q3 are not initialized anywhere
- d- code is invalid as q2 = p + q is incorrect without moving it to register
Therefore, option B is only correct option.
Quiz of this Question