Optimization: Introduction and Control Flow Analysis
8.0 Introduction
The optimization phase makes changes to the intermediate representation
so that the code generator will put out better but equivalent code.
The term optimization is a misnomer. The problem of changing code
in all cases to the best it can be is an undecidable problem;
it cannot be solved an algorithm on a computer.
We can, however, improve code in most cases.
There are machine dependent optimizations such as good allocation of registers and machine
independent optimizations such as computing constants; constant computation at compile-time
rather than generating code to compute them saves execution time.
Optimization can consume a lot of compile-time, so we want the most payoff for the least effort.
In particular, the compiler needs to guess where the most frequently executed parts of the program
are.
|