- Common subexpression estimate - Basic block reorder to prevent extra J inst - Register rename to reduce frame size - Block level dead code estimate - Loop invariant move