- control flow graphs
- static single-assignment
- continuation-passing style
- three-address code
- constant propagation
- common subexpression elimination
- loop invariant code motion
- global value numbering
- strength reduction
- scalar replacement of aggregates
- dead code elimination
- loop unrolling