3.8k views

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 form of the above code?

1. p1 = a  - b
q1 = p1 * c
p1 = u  * v
q1 = p1 + q1
2. p3 = a  - b
q4 = p3 * c
p4 = u  * v
q5 = p4 + q4
3. p1 = a  - b
q1 = p2 * c
p3 = u  * v
q2 = p4 + q3
4. p1 = a - b
q1 = p * c
p2 = u * v
q2 = p + q


edited | 3.8k views
–3
+7
@Uddipto no its b)
0
why? we can clear p1 and load u-v to p1 again
+4
Yes but Static Single Assignment says that a variable cannot be used more than once in the LHS, and it is to be initialised atmost once.
0
In static single assigment we can assign only once bu read many times
0
yes but cant we completely clear the variable.. then reassign again
0
till I didn't understand what is static single assignment??
+1
a = b;

a = 5;

This is not SSA because a is assigned value more than once. More detailed explanation is given in the selected answer.
0
In option B , in the last line, rightmost var should be q4 not q.

Correct me?
+2

Here option (B), not typed correctly. 0

B IS CORRECT A IS WRONG

by Loyal (6.8k points)
edited
+6

In compiler design, static single assignment form (often abbreviated as SSA form or simply SSA) is a property of an intermediate representation (IR), which requires that each variable is assigned exactly once, and every variable is defined before it is used. Thus option B only satisfies the above criteria.

Option D INCORRECT because in last line we are directly adding P+Q without moving it to register

option C INCORRECT because in last line Q3+P4 is done however they dont even contain any value

Option A INCORRECT because P1 has been assigned value twice

So OPTION (B) is CORRECT
by Active (3.4k points)