•
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