Next: About this document ...
Up: Compiler Theory: Code Optimization
Previous: Induction Variables
Consider the following three-address code program.
L0 |
n := 10 |
|
s := 0 |
|
i := 0 |
L1 |
if i > n goto L6 |
|
j := i |
|
m := n |
|
p := m |
|
f := 1 |
L2 |
if p = 1 goto L3 |
|
f := f * p |
|
p := p - 1 |
|
goto L2 |
L3 |
a := f |
|
p := m - j |
|
f := 1 |
L4 |
if p = 1 goto L5 |
|
f := f * p |
|
p := p - 1 |
|
goto L4 |
L5 |
b := f |
|
c := a quo b |
|
s := s + c |
|
i := i - 1 |
|
goto L1 |
L6 |
|
- Give the flow graph of this program.
- Identify the back edges and the loops.
- For each basic block B compute the data-flow sets gen(B) and kill (B)
of the generated and killed variable definitions.
- Deduce from this study a significant optimization for the above code.
Next: About this document ...
Up: Compiler Theory: Code Optimization
Previous: Induction Variables
Marc Moreno Maza
2004-12-02