Directions (Q91–95): 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
Which of the following is the optimized version of the TAC given in the passage?
Pick an option to check yourself, or open the answer below.
Show answer & explanation
Correct answer: C.
100: t1 = y + 2 101: limit = 10 102: num = 9 103: b = t1 104: if i > j goto 106 105: goto 110 106: if num > b goto 108 107: goto 110 108: i = i - num 109: goto 104 110: j = i - num 111: k = j + b
Explanation
Option C applies the expected optimisations: constant folding (num = limit − 1 = 9), common-subexpression/copy propagation (b = y + 2 becomes b = t1), loop-invariant code motion (num and b moved out of the loop), and dead-code elimination ('initial' is never used). It also keeps j = i − num and k = j + b. The other options change the program's logic (wrong jump targets, missing j = i − num, or i = i − limit − 1). (Strictly, hoisting num and b out of the loop assumes the loop body executes; C is the intended answer.)More Theory of Computation and Compilers questions
- Which of the following is the correct high level code for the TAC given in the passage?
- What blocks do Block 3 and Block 5 dominate in the flow graph for the TAC given in the passage? (Basic blocks: B1 = 100–102, B2 = 103, B3 =…
- Which of the following is the correct flow graph (adjacency matrix of basic blocks B1–B7, row → column means an edge) for the TAC given in…
- Which of the following is TRUE about the Pumping Lemma for regular languages?
- Regarding code optimization (peephole optimization), choose the correct sequence A. Algebraic Simplification B. Use of machine idioms C. Re…
- Which of the following represents the language accepted by the Turing machine with the transition function (δ): δ(q0, a) = (q1, x, R) δ(q1,…