specifies a data dependency among assignment statements, as well as a partial order (therefore parallelism among statements). When statement is reached, there is a list of live variable assignments. If only one assignment is live, for example, constant propagation might be used. Compiler optimizations Data-flow analysis