This thesis examines three problems arising in the construction of an ambitious optimizing compiler based in a programming environment. The specific problems discussed are the analysis of aliasing patterns, computation of summary data flow information, and assignment of linkage styles to call sites.
A two phase algorithm for alias analysis is developed. Alias introduction analysis, performed during syntax analysis, detects the introduction of aliases and determines which call sites can propagate aliases. Alias propagation analysis uses a version of the classical iterative data flow analysis algorithm to compute potential aliases at each call site. The algorithm retains information to allow efficient updating in response to editing changes.
Two approaches to computing may summary information are presented. The first uses a version of the algorithm developed for alias propagation analysis. The second approach divides the problem into analysis for call-by-reference formal parameters and global variables. The parameter problem is solved using Tarjan's fast path expression algorithm, while the global variable analysis uses a depth first version the interative algorithm.
An algorithm is developed for assigning linkage choices to each call site in the program. The algorithm compares the relative benefits of generating open, semi-open, semi-closed, and node split linkages at each call site. By using estimates and simplifications, it efficiently produces an assignment which leads to improved run-time behavior under reasonable assumptions.
Cited By
- Nichols L, Emre M and Hardekopf B Fixpoint reuse for incremental JavaScript analysis Proceedings of the 8th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis, (2-7)
- Cooper K and Kennedy K (2004). Interprocedural side-effect analysis in linear time, ACM SIGPLAN Notices, 39:4, (217-228), Online publication date: 1-Apr-2004.
- Callahan D, Cooper K, Kennedy K and Torczon L (2004). Interprocedural constant propagation, ACM SIGPLAN Notices, 39:4, (155-166), Online publication date: 1-Apr-2004.
- Burke M and Cytron R (2004). Interprocedural dependence analysis and parallelization, ACM SIGPLAN Notices, 39:4, (139-154), Online publication date: 1-Apr-2004.
- Abbott M and Peterson L (2019). A language-based approach to protocol implementation, ACM SIGCOMM Computer Communication Review, 22:4, (27-38), Online publication date: 1-Oct-1992.
- Abbott M and Peterson L A language-based approach to protocol implementation Conference proceedings on Communications architectures & protocols, (27-38)
- Wegman M and Zadeck F (1991). Constant propagation with conditional branches, ACM Transactions on Programming Languages and Systems, 13:2, (181-210), Online publication date: 1-Apr-1991.
- Burke M and Ryder B (2019). A Critical Analysis of Incremental Iterative Data Flow Analysis Algorithms, IEEE Transactions on Software Engineering, 16:7, (723-728), Online publication date: 1-Jul-1990.
- Ryder B, Landi W and Pande H (2019). Profiling an Incremental Data Flow Analysis Algorithm, IEEE Transactions on Software Engineering, 16:2, (129-140), Online publication date: 1-Feb-1990.
- Marlowe T and Ryder B An efficient hybrid algorithm for incremental data flow analysis Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (184-196)
- Cooper K and Kennedy K (2019). Interprocedural side-effect analysis in linear time, ACM SIGPLAN Notices, 23:7, (57-66), Online publication date: 1-Jul-1988.
- Callahan D (2019). The program summary graph and flow-sensitive interprocedual data flow analysis, ACM SIGPLAN Notices, 23:7, (47-56), Online publication date: 1-Jul-1988.
- Cooper K and Kennedy K Interprocedural side-effect analysis in linear time Proceedings of the ACM SIGPLAN 1988 conference on Programming language design and implementation, (57-66)
- Callahan D The program summary graph and flow-sensitive interprocedual data flow analysis Proceedings of the ACM SIGPLAN 1988 conference on Programming language design and implementation, (47-56)
- Ruggieri C and Murtagh T Lifetime analysis of dynamically allocated objects Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (285-293)
- Carroll M and Ryder B Incremental data flow analysis via dominator and attribute update Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (274-284)
- Burke M and Cytron R (2019). Interprocedural dependence analysis and parallelization, ACM SIGPLAN Notices, 21:7, (162-175), Online publication date: 1-Jul-1986.
- Callahan D, Cooper K, Kennedy K and Torczon L (2019). Interprocedural constant propagation, ACM SIGPLAN Notices, 21:7, (152-161), Online publication date: 1-Jul-1986.
- Burke M and Cytron R Interprocedural dependence analysis and parallelization Proceedings of the 1986 SIGPLAN symposium on Compiler construction, (162-175)
- Callahan D, Cooper K, Kennedy K and Torczon L Interprocedural constant propagation Proceedings of the 1986 SIGPLAN symposium on Compiler construction, (152-161)
- Cytron R, Lowry A and Zadeck F Code motion of control structures in high-level languages Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (70-85)
- Cooper K, Kennedy K and Torczon L (2019). The impact of interprocedural analysis and optimization on the design of a software development environment, ACM SIGPLAN Notices, 20:7, (107-116), Online publication date: 1-Jul-1985.
- Cooper K, Kennedy K and Torczon L The impact of interprocedural analysis and optimization on the design of a software development environment Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments, (107-116)
- Cooper K Analyzing aliases of reference formal parameters Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (281-290)
- Cooper K and Kennedy K Efficient computation of flow insensitive interprocedural summary information Proceedings of the 1984 SIGPLAN symposium on Compiler construction, (247-258)
- Cooper K and Kennedy K (2019). Efficient computation of flow insensitive interprocedural summary information, ACM SIGPLAN Notices, 19:6, (247-258), Online publication date: 1-Jun-1984.
Recommendations
Interprocedural pointer alias analysis
We present practical approximation methods for computing and representing interprocedural aliases for a program written in a language that includes pointers, reference parameters, and recursion. We present the following contributions: (1) a framework ...
Precise and efficient integration of interprocedural alias information into data-flow analysis
Data-flow analysis is a basis for program optimization and parallelizing transformations. The mechanism of passing reference parameters at call sites generates interprocedural aliases which complicate this analysis. Solutions have been developed for ...
Efficient flow-sensitive interprocedural data-flow analysis in the presence of pointers
CC'06: Proceedings of the 15th international conference on Compiler ConstructionThis paper presents a new worklist algorithm that significantly speeds up a large class of flow-sensitive data-flow analyses, including typestate error checking and pointer analysis. Our algorithm works particularly well for interprocedural analyses. By ...