Topics covered in Special Topics Section 2/16/06
Raymond Doyle
- Definition
of compiler optimization, why it is useful
- Concept
of compiler-generated code transformations
- Very
high level overview of the memory hierarchy and caches, to motivate
discussion of optimization to hide memory latencies
- The
following optimizations were discussed:
-
- Constant
folding and propagation
- Common
subexpression elimination
- Algebraic
simplification and strength reduction
- Dead
code elimination
- Inlining
- Loop-invariant
code motion, and other code motion
- Loop
unrolling
- Tail
Recursion elimination
- Instruction
scheduling
- Register
allocation
- Cache
optimizations
- Software
piplining
- Emphasized
that better algorithms are a better way to speed up a program, and a
compiler can�t change an algorithm (e.g. replace insertion sort with merge
sort).