Results 1  10
of
18
Efficiently computing static single assignment form and the control dependence graph
 ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS
, 1991
"... 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 ass ..."
Abstract

Cited by 839 (7 self)
 Add to MetaCart
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.
The Use of Program Dependence Graphs in Software Engineering
, 1992
"... This paper describes a languageindependent program representationthe program dependence graphâ€”and &mCusses how program dependence graphs, together with operations such as program slicing, can provide the basis for powerfid programming tools that address important softwareengineering problems, suc ..."
Abstract

Cited by 101 (2 self)
 Add to MetaCart
This paper describes a languageindependent program representationthe program dependence graphâ€”and &mCusses how program dependence graphs, together with operations such as program slicing, can provide the basis for powerfid programming tools that address important softwareengineering problems, such as understanding what an existing program does and how it works, understanding the differences between several versions of a program, and creating new programs by combining pieces of old programs. The paper primarily surveys work in this mea that has been czried out at the University of Wisconsin during the past five years.
Identifying the Semantic and Textual Differences Between Two Versions of a Program
 Proceedings of the ACM SIGPLAN 90 Conference on Programming Language Design and Implementation
, 1990
"... Textbased file comparators (e.g., the Unix utility diff), are very general tools that can be applied to arbitrary files. However, using such tools to compare programs can be unsatisfactory because their only notion of change is based on program text rather than program behavior. This paper describe ..."
Abstract

Cited by 97 (6 self)
 Add to MetaCart
Textbased file comparators (e.g., the Unix utility diff), are very general tools that can be applied to arbitrary files. However, using such tools to compare programs can be unsatisfactory because their only notion of change is based on program text rather than program behavior. This paper describes a technique for comparing two versions of a program, determining which program components represent changes, and classifying each changed component as representing either a semantic or a textual change. ######################## This work was supported in part by the Defense Advanced Research Projects Agency, monitored by the Office of Naval Research under contract N0001488K, by the National Science Foundation under grant CCR8958530, and by grants from Xerox, Kodak, and Cray. Author's address: Computer Sciences Department, Univ. of Wisconsin, 1210 W. Dayton St., Madison, WI 53706. Permission to copy without fee all or part of this material is granted provided that the copies are not made...
Array SSA form and its use in Parallelization
, 1998
"... Static single assignment (SSA) form for scalars has been a significant advance. It has simplified the way we think about scalar variables. It has simplified the design of some optimizations and has made other optimizations more effective. Unfortunately none of this can be said for SSA form for array ..."
Abstract

Cited by 63 (6 self)
 Add to MetaCart
Static single assignment (SSA) form for scalars has been a significant advance. It has simplified the way we think about scalar variables. It has simplified the design of some optimizations and has made other optimizations more effective. Unfortunately none of this can be said for SSA form for arrays. The current SSA processing of arrays views an array as a single object. But the kinds of analyses that sophisticated compilers need to perform on arrays, for example those that drive loop parallelization, are at the element level. Current (scalar) SSA form does not provide the elementlevel data flow information required for such analyses. In this paper, we introduce an Array SSA form that captures precise elementlevel data flow information for array variables. It is general and simple, and coincides with scalar SSA form when applied to scalar variables. Array SSA form provides for renaming of array variables and uses a OE function to identify the defining assignment for each array elem...
DependenceBased Program Analysis
 In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation
, 1993
"... Program analysis and optimization can be speeded up through the use of the dependence flow graph (DFG), a representation of program dependences which generalizes defuse chains and static single assignment (SSA) form. In this paper, we give a simple graphtheoretic description of the DFG and show ho ..."
Abstract

Cited by 60 (6 self)
 Add to MetaCart
Program analysis and optimization can be speeded up through the use of the dependence flow graph (DFG), a representation of program dependences which generalizes defuse chains and static single assignment (SSA) form. In this paper, we give a simple graphtheoretic description of the DFG and show how the DFG for a program can be constructed in O(EV ) time. We then show how forward and backward dataflow analyses can be performed efficiently on the DFG, using constant propagation and elimination of partial redundancies as examples. These analyses can be framed as solutions of dataflow equations in the DFG. Our construction algorithm is of independent interest because it can be used to construct a program's control dependence graph in O(E) time and its SSA representation in O(EV ) time, which are improvements over existing algorithms. 1 Introduction Anumber of recent papers have focused attention on the problem of speeding up program optimization [FOW87, BMO90, CCF91, PBJ + 91, CFR +...
Detecting Program Components With Equivalent Behaviors
, 1989
"... This paper presents an efficient algorithm for detecting program components  in one or more programs  that exhibit identical execution behaviors. The algorithm operates on a new graph representation for programs that combines features of staticsingleassignment forms and program dependence graph ..."
Abstract

Cited by 30 (5 self)
 Add to MetaCart
This paper presents an efficient algorithm for detecting program components  in one or more programs  that exhibit identical execution behaviors. The algorithm operates on a new graph representation for programs that combines features of staticsingleassignment forms and program dependence graphs. The result provides insight into the relationship between execution behaviors and (control and flow) dependences in the program. The algorithm, called the SequenceCongruence Algorithm, is applicable to programs written in a language that includes scalar variables and constants, assignment statements, conditional statements, and whileloops. The SequenceCongruence Algorithm can be used as the basis for an algorithm for integrating program variants. Categories and Subject Descriptors: D.3.4 [Programming Languages]: Processors  compilers, interpreters, optimization; E.1 [Data Structures] graphs
Reducing the Cost of Data Flow Analysis By Congruence Partitioning
 In International Conference on Compiler Construction
, 1994
"... . Data flow analysis expresses the solution of an information gathering problem as the fixed point of a system of monotone equations. This paper presents a technique to improve the performance of data flow analysis by systematically reducing the size of the equation system in any monotone data flow ..."
Abstract

Cited by 20 (1 self)
 Add to MetaCart
. Data flow analysis expresses the solution of an information gathering problem as the fixed point of a system of monotone equations. This paper presents a technique to improve the performance of data flow analysis by systematically reducing the size of the equation system in any monotone data flow problem. Reductions result from partitioning the equations in the system according to congruence relations. We present a fast O(n log n) partitioning algorithm, where n is the size of the program, that exploits known algebraic properties in equation systems. From the resulting partition a reduced equation system is constructed that is minimized with respect to the computed congruence relation while still providing the data flow solution at all program points. 1 Introduction Along with the growing importance of static data flow analysis in current optimizing and parallelizing compilers comes an increased concern about the high time and space requirements of solving data flow problems. Experi...
Static Single Information Form
 Master's thesis, Massachussets Institute of Technology
, 1999
"... This paper presents a new intermediate format called Static Single Information (SSI) form. SSI form generalizes the traditional concept of a variable de nition to include all information de nition points, or points where the analysis may obtain information about the value in a variable. Informatio ..."
Abstract

Cited by 20 (0 self)
 Add to MetaCart
This paper presents a new intermediate format called Static Single Information (SSI) form. SSI form generalizes the traditional concept of a variable de nition to include all information de nition points, or points where the analysis may obtain information about the value in a variable. Information de nition points include conditional branches as well as assignments. Because SSI form provides a new name for each variable at each information de nition point, it provides excellent support for both predicated analyses, which exploit information gained from conditionals, and backwards dataow analyses.
Simple generation of static singleassignment form
 In Proceedings of the 9th International Conference on Compiler Construction
, 2000
"... cfl SpringerVerlag Abstract. The static singleassignment (SSA) form of a program provides data flow information in a form which makes some compiler optimizations easy to perform. In this paper we present a new, simple method for converting to SSA form, which produces correct solutions for nonreduc ..."
Abstract

Cited by 14 (0 self)
 Add to MetaCart
cfl SpringerVerlag Abstract. The static singleassignment (SSA) form of a program provides data flow information in a form which makes some compiler optimizations easy to perform. In this paper we present a new, simple method for converting to SSA form, which produces correct solutions for nonreducible controlflow graphs, and produces minimal solutions for reducible ones. Our timing results show that, despite its simplicity, our algorithm is competitive with more established techniques. 1 Introduction The static singleassignment (SSA) form is a program representation in which variables are split into "instances. " Every new assignment to a variable or more generally, every new definition of a variable results in a new instance. The variable instances are numbered so that each use of a variable may be easily linked back to a single definition point. Figure 1 gives a example of SSA form for some straightline code. As its name suggests, SSA only reflects static properties; in the example, V1's value is a dynamic property, but the static property that all instances labelled V1 refer to the same value will still hold.