Control flow analysis

  title={Control flow analysis},
  author={Frances E. Allen},
  journal={Proceedings of a symposium on Compiler optimization},
  • F. Allen
  • Published 1 July 1970
  • Computer Science
  • Proceedings of a symposium on Compiler optimization
Any static, global analysis of the expression and data relationships in a program requires a knowledge of the control flow of the program. Since one of the primary reasons for doing such a global analysis in a compiler is to produce optimized programs, control flow analysis has been embedded in many compilers and has been described in several papers. An early paper by Prosser [5] described the use of Boolean matrices (or, more particularly, connectivity matrices) in flow analysis. The use of… 

Utilizing the Value State Dependence Graph for Haskell

The goal of this thesis is to make the Value State Dependence Graph applicable for Haskell by equipping the GHC compiler with a proof-of-concept back-end that facilitates the use of it.

Applications of a graph grammar for program control flow analysis

This paper studies the applicability of a grammatical approach to describing the set of control flow graphs which arise from "good" programs in the sense proposed by many programming practitioners and addresses several new questions.

Iterative-free program analysis

A new method to analyze programs through recursive graph traversals instead of iterative procedures, based on the fact that most programs (without spaghetti GOTO) have well-structured control flow graphs, graphs with bounded tree width is proposed.

The program dependence graph and its use in optimization

An intermediate program representation, called the program dependence graph (PDG), that makes explicit both the data and control dependences for each operation in a program, allowing transformations to be triggered by one another and applied only to affected dependences.

Practical dynamic reconstruction of control flow graphs

Experimental results provide evidence that completeness, that is, the ability to conclude that the entire CFG has been discovered, is achievable on many functions that are part of industry‐strong benchmarks, and indicate that dynamic information greatly enhances the ability of DynInst, a state‐of‐the‐art binary reconstructor, to deal with code stripped of debugging information.

A Fast Algorithm for the Elimination of Common Subexpressions

An O(n log n) bit vecter step algorithm is given to determine "available expressions" and this information is essential for global elimination of common subexpressions.

Symbolic evaluation and the global value graph

By means of a structure called the global value graph which compactly represents both symbolic values and the flow of these values through the program, this paper is able to obtain results that are as strong as either of these algorithms at a lower time cost, while retaining applicability to all flow graphs.

An Empirical Study of Iterative Data-Flow Analysis

A number of different data structures are laid out to speed up the iterative algorithm using a worklist approach and it is shown that the worklist algorithm is significantly faster than the round-robin approach, but that this advantage can be reversed if mistakes are made in the work list implementation.

Use-Definition Chains with Applications

A unified approach to global program optimization

A technique is presented for global analysis of program structure in order to perform compile time optimization of object code generated for expressions that includes constant propagation, common subexpression elimination, elimination of redundant register load operations, and live expression analysis.



Optimization of expressions in Fortran

A method of optimizing the computation of arithmetic and indexing expressions of a Fortran program is presented. The method is based on a linear analysis of the definition points of the variables and

Program optimization

This paper addresses the problems encountered in launching and promoting a program optimization service in an open shop environment among users with widely varying levels of programming to indicate the method used to isolate and correct the sections of code that preempt the vital computer resources.

The LRLTRAN compiler

A language and a compiler for that language, called LRLTRAN, is a heavily augmented FORTRAN and makes use internally of a postfix Polish notation and a free representation referred to as a “composite blocking table”.

Object code optimization

Methods of analyzing the control flow and data flow of programs during compilation are applied to transforming the program to improve object time efficiency and implementation of these and other optimizations in OS/360 FORTRAN H are described.

Applications of Boolean matrices to the analysis of flow diagrams

  • R. Prosser
  • Computer Science
    IRE-AIEE-ACM '59 (Eastern)
  • 1959
Questions concerning order of operations, location and disposition of transfers, identification of subroutines, internal consistency, redundancy and equivalence, all involve a knowledge of the structure of the program under study and must be handled effectively by any automatic programming system.

Programming languages and their compilers

Global Common Sub-expression Elimination

  • these Proceedings

Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis

  • Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis CS553 Lecture Control-Flow Analysis

Some Analysis Techniques for Optimizing Computer Programs

  • Proc. Second Intl. Conf. of Systems Sciences