give each variable definition a fresh name
propagate fresh name to subsequent uses
every variable has exactly one definition
Pros:
contain part of flow information
define-and-use pairs are explicit
Cons:
introduce too many variables and phi-functions
inefficiency when transferring to 3AC and then to machine code
Basic block: maximal sequences of consecutive three-address instructions with the properties that