| J.-D. Choi, R. Cytron, and J. Ferrante, "Automatic construction of sparse data flow evaluation graphs," oc. 18th Annu. ACM Symp.Prs(vUUzs Pr ogr amming Languages, Orlando, FL, Jan. 1991, pp. 55--66. |
....each control flow graph node are nearly as large or larger than the original source code. Moreover, it may be an inefficient representation for data flow analysis as compared to sparse representations such as the program summary graph [9] the SSA graph [21] or Sparse Data Flow Evaluation Graphs [15]. These graphs provide direct 12 connections in a graph between nodes that create and use data flow information. The program summary graph and SSA specifically connect definitions of variables with their uses; the der use relationship is useful for a variety of data flow problems but is not ....
J. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the Eighteenth Annual ACM Symposium on the Principles of Programming Languages, pages 55-66, Orlando, FL, Jan. 1991.
....Graphs Due to the complexity of the predicate tupled data flow problem, a sparse algorithm could be a key part of a practical solution. To enable use on a wide range of data flow problems, we have developed a general sparse analysis approach based on the sparse data flow evaluation graph (SG) [24]. We extend the SG algorithm to accommodate the fact that a predicate tupled data flow instance has non identity transfer functions on both nodes and edges (to incorporate branch or merge conditions) but still obtain a more ecient solution than a non sparse analysis. 3.5.1 Original SG Algorithm ....
....Prior work has looked at ways to reduce the size of the data flow graph by ex ploiting properties of the graph and transfer functions. Besides the classic work on interval or monoid based reduction techniques in the compiler community [44, 98, 99, 110, 112] the sparse data flow graphs of [24] utilize some more generally applicable rules, which are elaborated upon in different contexts by [35, 41] In the case of interprocedural analysis, reducing the size of the system is even more important. A procedure or region s data flow system may be solved repeatedly for multiple inputs as an ....
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the Eighteenth Annual A CM Sympo- sium on the Principles of Programming Languages, pages 55 66, Orlando, FL, January 1991.
....shows source code; the middle column shows a low level intermediate code version of the same loop. Notice the four instruction sequence that begins at the label L. The compiler inserted this code (with its multiply) as the expansion of a(i) The right column shows the code in pruned ssa form [14, 20]. The left column of Figure 2 shows the result of strength reduction and the optimizations described in Section 4.4. The compiler created a new variable, t5, to hold the value of the expression (i Gamma 1) Theta 4 a. The value of the expression is computed directly, rather than as a function of ....
....time, or if its definition lies outside the loop being processed. While this does not identify all possible region constants, our experience suggests that the missed opportunities are not significant in practice. The first step of the algorithm constructs the pruned ssa form of the program [14, 20, 6]. In ssa form, each name is defined exactly once and each definition refers to exactly one use. To reconcile these rules, Lcm will not move conditionally executed code out of loops. Thus, some invariant code may remain inside a conditional. Similarly, we can construct loops where a value is loop ....
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, pages 55--66, Orlando, Florida, Jan. 1991.
....and nodes can be arbitrarily replaced. Clients of our framework would simply sequence analyses and transformations if non local graph replacements are needed, as in all other frameworks, including Assmann s. There is also a large body of literature on advanced and e#cient program representations [16, 12, 8, 14, 21, 30, 1, 18, 20, 25]. The definition of our framework is independent of the specific program representation used, and thus our work should be applicable to a wide range of graph based intermediate representations. In fact, our current Whirlwind implementation works over both control flow graphs and dataflow graphs. ....
Jong-Deok Choi, Ron Cytron, and Jeanne Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, pages 55--66, January 1991.
....in pruned form are a subset of those in minimal form, and as such note that pruned form does not strictly satisfy the given SSA criteria. In most cases, the more regular properties of minimal SSA form outweigh the pruned form s slight increase in space efficiency. Choi, Cytron, and Ferrante [7] give a formal definition and construction algorithm for pruned SSA. 15 false Po (Xo 2) Y2 , 6 Xo Z2 dp (Zo, Z ) Y4 Y 1 no further uses of X or Z 1 Po (Xo 2) 4 Xo Y2 , 6 Xo Y , 1) Y, Y2) Figure 4.2: Minimal (left) and pruned (right) SSA forms. Figure ....
....of pruned SSI form appears to lead to a chicken and egg problem: although the pruned SSI 37 framework allows highly efficient liveness analysis, obtaining the liveness information from the original program can be problematic. The fastest sparse algorithm has stated time bounds of O( N 2) [7], which is likely to be more expensive than the rest of the SSI form conversion. Luckily, Kam and Ullman [21] in conjunction with an empirical study by Knuth [23] show that liveness analysis is highly likely to be linear for reducible flow graphs. In our work this question is avoided, as we ....
[Article contains additional citation context not shown here]
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the 18th ACM Symposium on Principles of Programming Languages (POPL), pages 55-66, Orlando, Florida, Jan. 1991. 89
....in pruned form are a subset of those in minimal form, and as such note that pruned form does not strictly satisfy the given SSA criteria. In most cases, the more regular properties of minimal SSA form outweigh the pruned form s slight increase in space efficiency. Choi, Cytron, and Ferrante [7] give a formal definition and construction algorithm for pruned SSA. 15 false 4 Xo Po (Xo 2) Y2 6 Xo V3 qb (Vl ,V2) Z2 dp (Zo, Zl ) Y4 Y3 l no further uses of X or Z Y1 Po (Xo 2) 4 Xo Y2 6 Xo Y3 qb (Vl ,V2) Y4 Y3 ] Figure 4.2: Minimal (left) and ....
....creation of pruned SSI form appears to lead to a chicken and egg problem: although the pruned SSI framework allows highly efficient liveness analysis, obtaining the liveness information from the original program can be problematic. The fastest sparse algorithm has stated time bounds of O(5 N 2) [7], which is likely to be more expensive than the rest of the SSI form conversion. Luckily, Kam and Ullman [21] in conjunction with an empirical study by Knuth [23] show that liveness analysis is highly likely to be linear for reducible flow graphs. In our work this question is avoided, as we ....
[Article contains additional citation context not shown here]
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the 18th ACM Symposium on Principles of Programming Languages (PPL), pages 55-66, Orlando, Florida, Jan. 1991. 89
....in pruned form are a subset of those in minimal form, and as such note that pruned form does not strictly satisfy the given SSA criteria. In most cases, the more regular properties of minimal SSA form outweigh the pruned form s slight increase in space efficiency. Choi, Cytron, and Ferrante [7] give a formal definition and construction algorithm for pruned SSA. j j j j j j j Q Q Q Qs Q Q Q Qs j j j j j j j Q Q Q Qs Q Q Q Qs Figure 4.2: Minimal (left) and pruned (right) SSA forms. Figure 4.2 compares minimal and pruned SSA form for our ....
....of pruned SSI form appears to lead to a chicken and egg problem: although the pruned SSI framework allows highly efficient liveness analysis, obtaining the liveness information from the original program can be problematic. The fastest sparse algorithm has stated time bounds of O(E N ) [7], which is likely to be more expensive than the rest of the SSI form conversion. Luckily, Kam and Ullman [21] in conjunction with an empirical study by Knuth [23] show that liveness analysis is highly likely to be linear for reducible flow graphs. In our work this question is avoided, as we ....
[Article contains additional citation context not shown here]
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the 18th ACM Symposium on Principles of Programming Languages (POPL), pages 55--66, Orlando, Florida, Jan. 1991. 89
.... in practice there is evidence suggesting that some of these algorithms only rarely achieve worst case performance [9, 10] Second, our algorithm may be extendible to other forms of minimal SSA, such as pruned SSA form, which only places a function if the variable is live at that point [7]. Third, we are currently throwing away useful information. The algorithm of Cytron et al. that we compare our algorithm to in Sect. 4 only determines where functions should be placed. Our algorithm determines this too, of course, but also knows upon completion what the arguments to the ....
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic Construction of Sparse Data Flow Evaluation Graphs. ACM POPL '91, pp. 55-66.
....in the literature. The properties of DFA problems have been formalized by many authors: Cousot [22] Graham and Wegman [39] Hecht [42, 43] Kam and Ullman [52, 53] Marlowe and Ryder [62] Ryder [76] and Tarjan [83] Efficient algorithms to solve DFA problems have been developed by Choi et al. [19], Graham and Wegman [39] Hecht and Ullman [43] Horwitz et al. [46] Tarjan [82] and Ullman [86] Kildall [54] was the first to recognize that program analysis can serve as a basis for implementing optimizations. By choosing the appropriate abstract domain, a data flow analyzer can compute not ....
....f 3 ( Chapter 2 Data flow Analysis A Basis for Optimizers 19 2.2. 3 Sparse Data flow Evaluation Graphs: Skipping Regions Sparse DFA problems those in which many of the flow functions are identity functions can be solved efficiently with sparse data flow evaluation graphs (SDFEG) [19], a generalization of the static single assignment representation (SSA) 25] Sparse DFA problems occur, for example, when we wish to consider only a subset of a procedure s variables: for example, when trying to find the reaching definitions for a single variable as in Section 2.1.1. ....
[Article contains additional citation context not shown here]
J. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graph. In 18th ACM Symposium on Principles of Programming Languages, 1991.
....that each use of a value references exactly one definition [13] To achieve this goal, the construction technique inserts special definitions called # nodes at those points where control flow paths join and di#erent values merge. We actually use the pruned SSA graph, with dead # nodes eliminated [9]. ACM Transactions on Programming Languages and Systems, Vol. 16, No. 3, May 1994, pp. 428 455. Improvements to Graph Coloring Register Allocation 11 A natural way to view the SSA graph for a procedure is as a collection of values, each composed of a single definition and one or more uses. ....
....was based on def use chains [8] Long before our interest in rematerialization, we adopted an implementation strategy for renumber based on the pruned SSA graph. Conceptually, that implementation has four steps: 1) Determine liveness at each basic block using a sparse data flow evaluation graph [9]. 2) Insert # nodes based on dominance frontiers [13] Avoid inserting dead # nodes. 3) Renumber the operands in every instruction to refer to values instead of the original virtual registers. At the same time, accumulate availability information for each block. The intersection of live and ....
[Article contains additional citation context not shown here]
Choi, J.-D., Cytron, R., and Ferrante, J. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth ACM Symposium on Principles of Programming Languages (Orlando, Florida, Jan. 1991), pp. 55--66.
....F denotes the number of functions in the program. In a flow sensitive analysis, the program control flow is taken into account when conducting analysis. Alias relations are killed if assignments to the same destination occur sequentially, and they are combined at program points called meet nodes [18]. Meet nodes are actual or abstract nodes in the flow graph where different program flows meet. An example meet node is shown in Figure 5.5 node d is a meet node where the yes and the no branch of the conditional statement in a meet. At each meet node, a union operation on the alias relations ....
J. Choi, R. Cytron, J. Ferrante. "Automatic Construction of Sparse Data Flow Evaluation graphs". In 18 th Annual ACM Symposium on the Principles of Programming Languages. pp55-66.
....not subsequently used, i.e. written to memory, then ensuring a unique assignment from the point of view of subsequent basic blocks is unnecessary. Thus, as shown in Figure 1. c, the OE functions associated with the variables x and y can be pruned such code is said to be in the pruned SSA form [3]. The role of the OE functions is to realize conditional assignments, depending on which control path is followed to the renamed variable. From a compilation point of view, the SSA form eliminates false data dependencies by introducing additional variable names. Indeed, for our example, basic ....
J.-D.Choi, R.Cytron, and J.Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the 18th Annual ACM Symposium on Principles of Programming Languages, pages 55--66, January 1991.
....global and local versions of an optimization simultaneously and efficiently. The amount of effort required to implement an optimization can thus be correspondingly reduced. Similar reductions in implementation effort for some optimizations can be had through prior sparse techniques similar to ours [Choi et al. 1991], although that work did not apply its techniques to expression based optimization problems. Further motivation for this work comes from the fact that traditional data flow analysis based on bit vectors does not interface well with the SSA form of program representation. The use def information ....
.... Delta 11 CodeMotion, transforms the code to form the optimized program. The temporary t is introduced to save and reuse the values of E corresponding to instances of redundancy eliminated by SSAPRE. Although partial redundancy elimination is not among the optimizations treated by Choi et al. [Choi et al. 1991], much of our algorithm can be cast in their sparse data flow evaluation graph framework. Our FRG for each expression is a flow graph in their terminology, and the DownSafety and WillBeAvail steps of SSAPRE are examples of a class of procedures they call evaluations. 3. SSAPRE ALGORITHM In ....
Choi, J., Cytron, R., and Ferrante, J. 1991. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth ACM Symposium on Principles of Programming Languages. 55--66.
....of this work, and points out some promising areas where similar techniques can be applied using SSAPRE as a model. 2 Related Work In recent years, we have seen development of different techniques aimed at improving the solution of data flow problems that are related to SSA or PRE. In [CCF91] by generalizing SSA form, Choi et al. derived Sparse Evaluation Graphs as reduced forms of the original flow graph for monotone data flow problems related to variables. The technique must construct a separate sparse graph per variable for each data flow problem, before solving the data flow ....
J. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth ACM Symposium on Principles of Programming Languages, pages 55--66, January 1991.
....the flow graph collects data flow information, and a flow graph traversal uses the collected information to perform optimizations. In the literature and in practice this two step organization is often used It is used by Aho, Sethi and Ullman [1] in their descriptions of optimizations, and by Chow[4] in his implemention of optimizations. Because data flow analysis consumes a lot of time and space, compiler writers are concerned with implementing the analyzers efficiently. This concern has led to two deficiencies in existing optimizers. First, compiler writers lower time and space ....
....examples, all solving the available expression problem (AVEP) 1] An expression is available at a node if every path from the source to has evaluated the expression and the value of the expression remains the same if reevaluated at . Determining available expressions is important for code motion [4]. These three examples show Sharlit s ability to apply a variety of solution techniques and solve versions of AVEP using progressively more sophisticated and potentially faster solution techniques. To underscore the extensibility of Sharlit generated analyzers, we build each example from the ....
[Article contains additional citation context not shown here]
J. Choi, R. Cytron, and J. Ferrante, Automatic construction of sparse data flow evaluation graphs, In POPL 1991.
....each use of a value references exactly one definition [13] To achieve this goal, the construction technique inserts special definitions called OE nodes at those points where control flow paths join and different values merge. We actually use the pruned SSA graph, with dead OE nodes eliminated [9]. A natural way to view the SSA graph for a procedure is as a collection of values, each composed of a single definition and one or more uses. Each value s definition is either a single instruction or a OE node that merges two or more values. By examining the defining instruction for each value, ....
....was based on def use chains [8] Long before our interest in rematerialization, we adopted an implementation strategy for renumber based on the pruned SSA graph. Conceptually, that implementation has four steps: 1. Determine liveness at each basic block using a sparse data flow evaluation graph [9]. 2. Insert OE nodes based on dominance frontiers [13] Avoid inserting dead OE nodes. 3. Renumber the operands in every instruction to refer to values instead of the original virtual registers. At the same time, accumulate availability information for each block. The intersection of live and ....
[Article contains additional citation context not shown here]
Choi, J.-D., Cytron, R., and Ferrante, J. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth ACM Symposium on Principles of Programming Languages (Jan. 1991), pp. 55--66.
....and returns is not an option for other applications such as interprocedural dataflow analysis. A popular method to perform intraprocedural dataflow analysis consists in building sparse dataflow representations (such as the Static Single Assignment (SSA) form [6] sparse dataflow evaluator graphs [5], and Quick Propagation Graphs [18] solving dataflow problems in these representations, and then projecting the solution onto the original program. The construction of these sparse representations is based on computing control dependence in the reverse control graph of the program. Extending ....
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the 18th ACM Symposium on Principles of Programming Languages, pages 55--66, January 1991.
....assertions are kept at each point, and fewer need be propagated through each statement. General sparse representations such as static single assignment (SSA) form [CFR 89] completely describe a program s behavior, while analysis specific representations such as sparse evaluation graphs (SEGs) CCF91] represent only those program statements needed to solve a particular dataflow problem. This paper describes the use of a single sparse program Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial ....
....additional proxy node assures that the pointer valued (and thus interesting) formals from and to cannot be deleted as dead code. Our approach of using the same intermediate representation for the original and specialized graphs differs from existing work on sparse graph based techniques [ASU86, CCF91, JPP94] which build their sparse representations directly from control flow graphs. Doing so might allow for a more space efficient representation by avoiding duplication of entire VDG nodes. However, using a real VDG for the sparse graph has advantages: ffl Existing analyses are applicable; ....
[Article contains additional citation context not shown here]
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, pages 55--66. ACM Press, Jan. 1991.
....dispatch, inline functions and methods, unbox variables, as well as for interprocedural constant propagation and locality approximation. In the future we will also explore more efficient implementations of the type 15 inference algorithms, including templates [15] and sparse evaluation graphs [11] which may reduce the memory and compute time requirements. We are expanding the framework for more interprocedural analyses, and increasing the type domain for summarization [3] and to include integer ranges. 8 Acknowledgements We would like to thank Vijay Karamcheti, Xingbin Zhang, Julian ....
J. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse dataflow evaluation graphs. In Proceedings of the ACM Symposium on Principles of Programming Languages, 1990.
....is true, y points to an extant object. Therefore, cond can be considered as a surrogate for EST(y) at S20, and the part of program consisting of the then portion can be specialized with respect to y.foo( at S20. 5. 1 Using the Sparse Evaluation Graph We use the sparse evaluation graph (SEG) [10] for determining the extant tests and their placements. The SEG is a generalization of static single assignment (SSA) 13] and can be applied to both forward and backward monotone data flow problems, while offering the same benefits as those of SSA applied to forward def use based data flow ....
J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In 18th Annual ACM Symposium on the Principles of Programming Languages, pages 55--66, Jan. 1991.
....where they are required. One variant of SSA form [52] would sometimes forego placing a OE function at a convergence point Z, so long as there are no more uses for V in or after Z. The OE function could then be omitted without any risk of losing Condition 3. This has been called pruned SSA form [16], and it is 11 sometimes preferable to our placement at all convergence points. However, as Figure 16 in x7 illustrates, our form is sometimes preferable to pruned form. When desired, pruned SSA form can be obtained by a simple adjustment of our algorithm [16, x5.1] For any variable V , the ....
....by the OE function is dead. Often such dead OE functions are useful, as in the equivalencing and redundancy elimination algorithms that are based on SSA form [5, 43] One such use is shown in Figure 16. Although others have avoided placement of dead OE functions in translating to SSA form [16, 52], we prefer to include the dead OE functions to increase optimization opportunities. There are many different definitions of dead code in the literature. Dead code is sometimes defined to be unreachable code and sometimes defined (as it is here) to be ineffectual code. In both cases, it is ....
J. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. Conf. Rec. Eighteenth ACM Symp. on Principles of Programming Languages, pages 55--66, January 1991.
No context found.
J.-D. Choi, R. Cytron, and J. Ferrante, "Automatic construction of sparse data flow evaluation graphs," oc. 18th Annu. ACM Symp.Prs(vUUzs Pr ogr amming Languages, Orlando, FL, Jan. 1991, pp. 55--66.
No context found.
Jong-Deok Choi, Ron Cytron, and Jeanne Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the 18th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 55--66, 1991.
No context found.
Choi, J., Cytron, R., Ferrante, J.: Automatic Construction of Sparse Data Flow Evaluation Graphs. (1991) 55--66
No context found.
Jong-Deok Choi, Ron Cytron, and Jeanne Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 55--66. ACM Press, 1991. ISBN 0-89791-419-8.
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC