Interprocedural data flow analysis in a programming environment

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.