**Constant propagation** is the process of substituting the values of known constants in expressions at compile time.

(D) is an example of constant propagation, note that it's not constant folding.

26 votes

Which one of the following is **FALSE**?

- A basic block is a sequence of instructions where control enters the sequence at the beginning and exits at the end.
- Available expression analysis can be used for common subexpression elimination.
- Live variable analysis can be used for dead code elimination.
- $x=4*5 \Rightarrow x=20$ is an example of common subexpression elimination.

27 votes

Best answer

- A basic block is a sequence of instructions where control enters the sequence at the beginning and exits at the end is TRUE.

- Available expression analysis can be used for common subexpression elimination is TRUE. Available expressions is an analysis algorithm that determines for each point in the program the set of expressions that need not be recomputed. Available expression analysis is used to do global common subexpression elimination (CSE). If an expression is available at a point, there is no need to re-evaluate it.

- Live variable analysis can be used for dead code elimination is TRUE.

- $x = 4 ∗ 5 \Rightarrow x = 20$ is an example of common subexpression elimination is FALSE. Common subexpression elimination (CSE) refers to compiler optimization replaces identical expressions (i.e., they all evaluate to the same value) with a single variable holding the computed value when it is worthwhile to do so Source: Geeksforgeeks

Correct Answer: $D$

13

**Constant propagation **refers to the act of replacing a bound variable with the constant it is bound to. Ex- **x=10; y=x+x+x;** that means x is bound to 10, then constant propagation will result into **y=10+10+10;**

**Constant folding **is simply evaluation of expression where all inputs are compile time constant. Ex- **y=10+10+10;** results into **y=30**;

I hope it helps.