Introduction to Machine-Independent Optimizations-Part 2 Data-flow Analysis