GATE | GATE-CS-2006 | Question 60
Consider the following C code segment.
for (i = 0, i<n; i++) { for (j=0; j<n; j++) { if (i%2) { x += (4*j + 5*i); y += (7 + 4*j); } } }
Which one of the following is false?
(A)
The code contains loop invariant computation
(B)
There is scope of common sub-expression elimination in this code
(C)
There is scope of strength reduction in this code
(D)
There is scope of dead code elimination in this code
Answer: (D)
Explanation:
Question asks about false statement
4*j is common subexpression elimination so B is true. 5*i can be moved out of inner loop so can be i%2. Means, A is true as we have loop invariant computation. Next, 4*j as well as 5*i can be replaced with a = - 4; before j loop then a = a + 4; where 4*j is computed, likewise for 5*i. C is true as there is scope of strength reduction. By choice elimination, we have D.
Quiz of this Question
Please comment below if you find anything wrong in the above post
Please Login to comment...