Symbolic Program Analysis in Almost-Linear Time
- 1 February 1982
- journal article
- Published by Society for Industrial & Applied Mathematics (SIAM) in SIAM Journal on Computing
- Vol. 11 (1) , 81-93
- https://doi.org/10.1137/0211007
Abstract
This paper describes an algorithm to construct, for each expression in a given program text, a symbolic expression whose value is equal to the value of the text expression for all executions of the program. We call such a mapping from text expressions to symbolic expressions a cover. Covers are useful in such program optimization techniques as constant propagation and code motion. The particular cover constructed by our methods is in general weaker than the covers obtainable by the methods of [Ki], [FKU], [RL], [R2] but our method has the advantage of being very efficient. It requires $O(m\alpha (m,n) + l)$ operations if extended bit vector operations have unit cost, where n is the number of vertices in the control flow graph of the program, m is the number of edges, l is the length of the program text, and $\alpha $ is related to a functional inverse of Ackermann’s function [T2]. Our method does not require that the program be well-structured nor that the flow graph be reducible.
Keywords
This publication has 11 references indexed in Scilit:
- An Optimizing Pascal CompilerIEEE Transactions on Software Engineering, 1980
- Variations on the Common Subexpression ProblemJournal of the ACM, 1980
- Code MotionSIAM Journal on Computing, 1980
- Applications of Path Compression on Balanced TreesJournal of the ACM, 1979
- A fast algorithm for finding dominators in a flowgraphACM Transactions on Programming Languages and Systems, 1979
- A Fast and Usually Linear Algorithm for Global Flow AnalysisJournal of the ACM, 1976
- Optimization of very high level languages—I: Value transmission and its corollariesComputer Languages, 1975
- Some Topics in Code OptimizationJournal of the ACM, 1974
- Flow Graph ReducibilitySIAM Journal on Computing, 1972
- Depth-First Search and Linear Graph AlgorithmsSIAM Journal on Computing, 1972