Reorder the tree code while maintaining
program semantics
Why?
 enable easier code generation
 more efficient code also
Dealing with side-effecting expressions
Determining Basic Blocks
Determining Traces
Text Box: ‹#›