** Overview of Global Optimization**

A globally optimizing compiler will perform the following operations:

- Perform interval analysis and compute the derived graphs.
- Order nodes using an ordering algorithm to find dominators.
- Find basic available and busy information for blocks.
- Solve boolean equations to get available and busy information for
each block.
- Replace common subexpressions by corresponding compiler variables.
- Assign registers using graph coloring.

The information provided by data flow analysis provides a special-purpose proof that the optimized program is correct (produces the same answers).