09 November 2016
In a CFG, node \(b_i\) dominates \(b_j\) denoted by \(b_i \underline{>>} b_j\) iff \(b_i\) lies on every path from \(b_0\) to \(b_j\) and \(b_i \underline{>>} b_i\).

A reverse postodrder (RPO) traversal is effective for a forward dataflow analysis
RPO on a reverse CFG works best for a backward dataflow analysis

Imprecise information
Array access
Pointer aliases with type boundedness constrain register allocation
Pointer disambigulation
Procedure side effects
An expression e is available at point p in a procedure iff on every path from the procedure’s entry to p, e is evaluated and none of its consituent subexpressions are redefined betwen that evaluation and p.

A definition d of some variable v reaches operation i iff i reads the value of v and there exists a path from d to i that does not define v.

An expression e is anticipable, or very busy, on exit from block b iff
every path that leaves b ealuates and subsequently uses e, and
ealuating e at the end of b would produce the same result as the first evaluation of e along each of thoes paths


