Tutorial: Techniques to Improve the Scalability and Precision of Data Flow Analysis

Since the introduction of data flow analysis more than 20 years ago, the applications of data flow analysis have expanded considerably with the recognition of its practical benefits. The current use of data flow analysis goes well beyond its initial application of register allocation and machine independent optimizations. Compilers today rely heavily on data flow analyses for sophisticated optimizations and to guide the exploitation of architectural features, such as the numbers of processors and their functional units and the memory hierarchy. Besides compilers, data flow analysis is also used in software engineering. Applications include program verification, debugging (especially of optimized and parallelized code), program test case generation and coverage analysis, regression testing, program integration and program understanding.