Abstract

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 flowanalysis 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.The expanded use of data flow analysis has created a demand for a number of extensions and improvements. Advances in data flow analysis have particularly occurred to improve its scalability and precision. Techniques that produce more informative results about the run-time behavior and environment have also been developed by integrating dynamic and architectural information into the analysis and its results. Data flow analysis has been extended to model different programming languages and features, including the object-oriented paradigm and parallel threads.This tutorial will first present a broad overview of the recent advances in data flow analysis and then focus on techniques that improve the scalability and precision of the analysis.Concern about the scalability of data flow analysis, both in terms of execution time and memory, is due to the need for whole program analysis, the use of multiple analyses, and the requirements of applications in a production environment. Techniques to improve the performance of analyses have focused on both the program representation used by the analysis and the analysis itself.Anumber of graph representations have been developed that permit direct connections between the generation of data flow information and the use of that information. Other representations have been proposed to enable more efficient interprocedural analysis by producing summary information about procedures. To improve the scalability of analysis, techniques have targeted reducing the number of program points that are modeled and reducing the number of quantities that are modeled simultaneously. Demand driven analysis and partitioning are the major approaches to improve the execution time performance and memory demands of analysis. Performance improvements have also been addressed for the recomputation of data flow by incremental updating of data flowinformation after changes are made to the program.Path-based approaches have been developed to improve the precision of data flow analysis. The precision of interprocedural analysis is improved by eliminating paths that are invalid based on the procedure call and return structure. Other techniques eliminate paths that are infeasible due to branch correlation. In both of these cases, the precision of the analysis is improved by eliminating spurious facts due to unrealizable paths. Another type of path-based techniques has as its focus the improvement of precision in the information produced for certain paths. One approach separates particular paths, namely frequently executed paths, to improve the precision of the analysis on the separated paths. Other techniques improve the precision of the analysis by proving a distributive formulation of non-distributed data flowproblems. These techniques incorporate information about the quantities generated on separate paths into the analysis to enable a more detailed representation of the quantities and hence less conservative merging at confluence points.The tutorial will conclude by discussing the needs of various applications in terms of data flow information and future directions for data flow analysis.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.