MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Efficiently computing static single assignment form and the control dependence graph (1991) [644 citations — 7 self]

by Ron Cytron ,  Jeanne Ferrante ,  Barry K. Rosen ,  Mark N. Wegman ,  F. Kenneth Zadeck
ACM Transactions on Programming Languages and Systems
Add To MetaCart

Abstract:

In optimizing compilers, data structure choices directly influence the power and efficiency of practical program optimization. A poor choice of data structure can inhibit optimization or slow compilation to the point that advanced optimization features become undesirable. Recently, static single assignment form and the control dependence graph have been proposed to represent data flow and control flow propertiee of programs. Each of these previously unrelated techniques lends efficiency and power to a useful class of program optimization. Although both of these structures are attractive, the difficulty of their construction and their potential size have discouraged their use. We present new algorithms that efficiently compute these data structures for arbitrary control flow graphs. The algorithms use dominance frontiers, a new concept that may have other applications. We also give analytical and experimental evidence that all of these data structures are usually linear in the size of the original program. This paper thus presents strong evidence that these structures can be of practical use in optimization. Categories and Subject Descriptors: D.3.3 [Programming Languages]: Language

Citations

675 The program dependence graph and its use in optimization – Ferrante, Ottenstein, et al.
420 Optimizing supercompilers for supercomputers – Wolfe - 1982
360 Register allocation and spilling via graph coloring – Chaitin - 1982
320 Analysis of pointers and structures – Chase, Wegman, et al. - 1990
266 Constant propagation with conditional branches – Wegman, Zadeck - 1991
216 Integrating noninterfering versions of programs – Horwitz, Prins, et al. - 1989
177 Flow analysis and optimization of Lisp-like structures – Jones, Muchnick - 1981
165 Register Allocation via Coloring – Chaitin, Auslander, et al. - 1981
150 Detecting Conflicts Between Structure Access – Larus, Hilfinger - 1988
149 The priority-based coloring approach to register allocation. ACM Transactions on Pro~ramming Languages and Systems 12 – Chow - 1990
148 Global value numbers and redundant computation – Rosen, Wegman, et al. - 1988
131 Dependence Analysis for Pointer Variables – Horwitz, Pfeiffer, et al. - 1989
118 The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages – Ottenstein, Ballance, et al. - 1990
118 An efficient way to find the side effects of procedure calls and the aliases of variables – Banning - 1979
114 A fast algorithm for finding dominators in a flowgraph – Lengauer, Tarjan - 1979
111 Interprocedural dependence analysis and parallelization – Burke, Cytron - 1986
109 First version of a dataflow procedure language – Dennis - 1974
109 A precise inter-procedural data flow algorithm – Myers - 1981
106 Automatic construction of sparse data flow evaluation graphs – Choi, Cytron, et al. - 1991
105 An overview of the ptran analysis system for multiprocessing – Allen, Burke, et al. - 1988
102 The Structure of Computers and Computations – Kuck - 1978
85 Dependence analysis for subscripted variables and its application to program transformation – Allen - 1983
74 An interval-based approach to exhaustive and incremental interprocedural data-flow analysis – Burke - 1990
66 A portable machine-independent global optimizer—Design and measurements – Chow - 1983
64 An interprocedural data flow analysis algorithm – Barth - 1977
57 The semantics of program dependence – CARTWRIGHT, FLLEISEN
56 Matrix Eigensystem Routines — EISPACK Guide – Smith, Boyle, et al. - 1976
54 A survey of data flow analysis techniques – Kennedy - 1981
53 Lifetime Analysis of Dynamically Allocated Objects – Ruggieri, Murtagh - 1988
53 Compiling C for vectorization, parallelization, and inline expansion – Allen, Johnson - 1988
46 Finding Dominators in Directed Graphs – Tarjan - 1974
42 Code motion of control structures in high-level languages – Cytron, Lowry, et al. - 1986
40 Symbolic program analysis in almost linear time – Reif, Tarjan - 1981
37 A Linear Time Algorithm for Finding Dominators in Flow Graphs and Related Problems – Harel - 1985
35 Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors – Larus - 1989
31 Safety considerations for storage allocation optimizations – Chase - 1988
30 Detecting program components with equivalent behaviors – YANG, HORWITZ, et al. - 1989
29 Data Flow Analysis for Procedural Languages – Rosen - 1979
24 The representation of algorithms – Shapiro, Saint
21 Property Extraction in Well-Founded Property Sets – Wegbreit - 1975
18 Detecting Equality of Values in Programs – Alpern, Wegman, et al. - 1988
13 What's in a Name – Cytron, Ferrante - 1987
10 Interprocedural data flow analysis in a programming environment – Cooper - 1983
8 Efficient symbolic analysis of programs – Reif, Lewis - 1986
6 An improved control dependence algorithm – Cytron, Ferrante - 1987
6 A formal framework for the derivation of machine-specific optimizers – GIEGERICH - 1983
6 Program Flow Analysis – Muchnick, Jones - 1981
5 Perfect report: 1 – Pointer - 1989
3 Global dead computation elimination – KENNEDY - 1973
1 An overview of the PTRAN analysis system for multiprocessing – Addison-Wesley, Mass - 1986