| R. Johnson and K. Pingali. Dependence-based program analysis. In PLDI, pages 78 -- 89, June 1993. |
....a # function at some of the join nodes in the control flow graph of the program. Cytron et al. 4] present an efficient algorithm to compute minimal SSA form (i.e. SSA form with the smallest number of # functions inserted) for programs with arbitrary control flow graphs. Johnson and Pingali [10] have recently presented a different approach to SSA conversion. SSA form is commonly defined for sequential scalar languages, but this is not fundamental. It can be used for array languages if care is taken to properly model references and updates to individual array elements and array sections ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, NM, June 1993.
....The most common construction algorithm for SSA form [5] uses dominance frontiers and su ers from a possible quadratic blow up in the size of the dominance frontier for certain common programming constructs. Various improved algorithms use such things as DJ graphs [18] and the dependence ow graph [10] to achieve O(EV ) time complexity for function placement. We build on this work to achieve O(EV ) construction of SSI form, and present a new algorithm for variable renaming in SSI form after and functions are placed. Our construction algorithm begins with a program structure tree of ....
....will describe an extension to SPTC that allows bitwidth analysis, and the possible uses of this information. 4. 1 Backward Data ow Analysis Backward data ow analyses are those in which information is propagated in the direction opposite that of program execution [15] There is general agreement [10, 3, 20] that SSA form is unable to directly handle backwards data ow analyses; liveness is often cited as a canonical example. However, SSI form allows the sparse computation of such backwards properties. Liveness, for example, comes for free from pruned SSI form: every variable is live in the region ....
[Article contains additional citation context not shown here]
Richard Johnson and Keshav Pingali. Dependencebased program analysis. In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation (PLDI), pages 78-89, Albuquerque, New Mexico, June 1993.
....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. ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, June 1993.
.... Wegman and Zadeck as a tool for efficient optimization in a pair of POPL papers [2, 35] and three years after that Cytron and Ferrante joined Rosen, Wegman, and Zadeck in explaining how to compute SSA form efficiently in what has since become the canonical SSA paper [10] Johnson and Pingali [20] trace the development of SSA form back to Shapiro and Saint in [37] while Havlak [17] views OE functions as descendants of the birthpoints introduced in [34] Despite industry adoption of SSA form in production compilers [8, 9] academic research into alternative representations continues. ....
....Despite industry adoption of SSA form in production compilers [8, 9] academic research into alternative representations continues. Recent proposals have included Value Dependence Graphs [45] Program Dependence Webs [5] the Program Structure Tree [19] DJ graphs [39] and Depedence Flow Graphs [20]. In comparison to these representations, the dominant characteristics of our Static Single Information form may be summarized as follows: ffl It names information units. ffl It is complete. ffl It is simple. ffl It is efficient. ffl It has no explicit control dependencies. Attribution by ....
[Article contains additional citation context not shown here]
R. Johnson and K. Pingali. Dependence-based program analysis. In Language Design and Implementation (PLDI), pages 78--89, Albuquerque, New Mexico, June 1993.
....following discussion. The numbers on the figure chronologically order each step. The step numbers in black represent the backward propagation of data ranges. Without backward propagation we arrive at the following data ranges: 1 SSA form is not an efficient form for performing backward propagation[11]. Bitwise currently reverts to standard data flow analysis techniques only when analyzing in the reverse direction. If efficiency in the less common case of backward propagation is a concern, our form of SSA could readily be converted to SSI form, which was designed for bi directional data flow ....
Richard Johnson and Keshav Pingali. Dependence-Based Program Analysis. In Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation, pages 78--89, 1993.
....2 To reduce the amount of program transformation, we actually allow the variables appearing in the constraint to be live outside the scope, as long as they are simultaneously live only in the scope. 3 Note that assignments are analogous to the switch operators in the dependence flow graph [JP93] Similarly, to generate a new name for constraints C5, a assignment is inserted after each bounds check. The bounds check can be viewed as a special if statement that transfers program s control into the exception handler if the check fails; if the check does not fail, a useful constraint is ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, June 1993.
.... an intermediate form for use in optimizing, parallelizing FORTRAN compilers for conventional architectures [BJP91, Bec92] Dependence flow graphs integrate data and control dependence information into a single structure, making efficient algorithms for program analysis and optimization possible [JP93, Joh95] Dependence flow graphs for even unstructured code can be constructed in linear time [JPP94] Also, dependence flow graphs possess a compositional formal execution semantics. PBJ 91] The author adapted the original dependence flow graphs for use in the BEDROC high level synthesis ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the 1993 SIGPLAN Conference on Program Design and Implementation. ACM Press, 1993.
....2 To reduce the amount of program transformation, we actually allow the variables appearing in the constraint to be live outside the scope, as long as they are simultaneously live only in the scope. 3 Note that assignments are analogous to the switch operators in the dependence flow graph [JP93] control into the exception handler if the check fails; if the check does not fail, a useful constraint is generated: check a[i1 ] check a[i1 ] i 2 : i1 ) i 2 a:length here The constraint C5 must be expressed on the new name i 2 , rather on i 1 , otherwise it could erroneously ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, June 1993.
.... form [CFR 89] gives each value a distinct name, which improves the efficiency of constant propagation and other analyses [WZ85, AWZ88, RWZ88, WZ89] The dependence flow graph (DFG) improves the efficiency of analyses by ignoring irrelevant sections of code and linking definitions to uses [JP93] These representations can be viewed as augmentations to the CFG that allow more rapid traversal of the CFG. The program dependence graph (PDG) eliminates some control artifacts by linking together operations with the same control dependence, and builds local data dependence graphs to simplify ....
....The remaining joins (e.g. the lower join in Figure 3) are merely mergings of distinct paths from a branch; no or Call nodes are necessary. Whether a particular join needs a corresponding internal and how to designate branch join ends are resolved by single entry single exit (SESE) analysis [JP93] A pair of distinct CFG nodes a; b encloses a SESE region iff there exist arcs ff ending at a and fi beginning at b such that ff dominates fi, fi postdominates ff, and ff and fi are cycle equivalent (i.e. every CFG graph cycle contains both or neither) The SESE region itself consists of a, b, ....
[Article contains additional citation context not shown here]
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, NM, June 23-25, 1993. ACM Press.
....there has been a flurry of research activity in the field of graph program representations. The Static Single Assignment (SSA) form [CFR 91] and the Program Dependence Graph (PDG) FOW87] were introduced. They were followed by the Program Dependence Web [BMO90] the Dependence Flow Graph [JP93] and the Value Dependence Graph [WCES94] We call these graphs scalar program abstractions, because they exactly represent data flow only in programs without arrays and loops. When it comes to representing data flow in programs that have array references and or loops, scalar abstractions cease ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In ACM '93 Conf. on Programming Language Design and Implementation, pages 78--89, June 1993.
.... employed as an intermediate form for use in optimizing, parallelizing FORTRAN compilers for conventional architectures [1] Dependence flow graphs integrate data and control dependence information into a single structure, making efficient algorithms for program analysis and optimization possible [8]. Dependence flow graphs for even unstructured code can be constructed in linear time [7] Also, dependence flow graphs possess a compositional formal execution semantics. 11] The author adapted the original dependence flow graphs for use in the BEDROC high level synthesis system [9] a system ....
R. Johnson and K. Pingali. Dependence-based program analysis. In Proceedings of the 1993 SIGPLAN Conference on Program Design and Implementation. ACM Press, 1993.
....on the graph in Figure 3 to ease the following discussion. The numbers on the figure chronologically order each step. The step numbers in black represent the backward propagation of data ranges. Without backward prop 2 SSA form is not an efficient form for performing backward propagation[13]. Bitwise currently reverts to standard data flow analysis techniques only when analyzing in the reverse direction. If efficiency in the less common case of backward propagation is a concern, our form of SSA could readily be converted to SSI form, which was designed for bi directional data flow ....
R. Johnson and K. Pingali. Dependence-Based Program Analysis. In Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation, pages 78--89, 1993.
....about each symbol to every node in a graph is inefficient, since not all nodes contain references or definitions of the symbol under consideration. Sparse representations, on the other hand, such as def use or use def chains [11] Static Single Assignment (SSA) 12] Dependence Flow Graphs (DFG) [13], or Program Dependence Graphs (PDG) 14] have all shown the virtue of operating on a sparse graph for analysis. The distinction between simple (all paths) constants and conditional constants can be seen in Figure 2. The simple value of y is determined to be constant only if both branches which ....
....a new name. Practically, however, this is undesirable (managing the symbol table explosion alone precludes this option) so the SSA properties are maintained by providing links between each use and its one reaching definition. Instead of providing def use links, as is the common implementation [4, 13], we provide use def links, giving rise to an SSA graph comprising factored use def chains (FUD chains) This approach yields several advantages, such as constant space per node and an ideal form with which to perform demand driven analysis[16] 8 Our analysis of programs begins within a ....
[Article contains additional citation context not shown here]
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 78--89, June 1993.
....about each symbol to every node in a graph is inefficient, since not all nodes contain references or definitions of the symbol under consideration. Sparse representations, on the other hand, such as def use or usedef chains, Static Single Assignment (SSA) 2] Dependence Flow Graphs (DFG) [6], or Program Dependence Graphs (PDG) 3] have all shown the virtue of operating on a sparse graph for analysis. The distinction between simple (all paths) constants and conditional constants can be seen in Figure 3. The simple value of y is determined to be constant only if both branches which ....
....a new name. Practically, however, this is undesirable (managing the symbol table explosion alone precludes this option) so the SSA properties are maintained by providing links between each use and its one reaching definition. Instead of providing def use links, as is the common implementation [6, 10], we provide use def links, giving rise to an SSA graph comprising factored use def chains (FUD chains) This approach yields several advantages, such as constant space per node and an ideal form with which to perform demanddriven analysis [8] Our analysis of programs begins within a framework ....
R. Johnson and K. Pingali. Dependence-based program analysis. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 78--89, June 1993.
....with extensions. We have previously described how to use FUD chains for other scalar analysis methods, such as induction variable detection and constant propagation [9, 13] The concepts of FUD chains are described in Section 2. Other intermediate representations, such as dependence flow graphs [10] or the program dependence web [4] could also be used with similar algorithms; these representations contain enough information to find the actual dependences, though they do not represent the dependence relations explicitly. We note that reaching definitions is not sufficient, since it does not ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proc. ACM SIGPLAN '93 Conf. on Programming Language Design and Implementation, pages 78--89, Albuquerque, NM, June 1993.
....region nodes have been added for each control region; the edges linking basic blocks to region nodes are shown in dotted style. 5. 2 Combining SSA Form and Dependence Information An alternative combination of data dependence and control dependence information is the dependence flow graph (DFG) JP93] which represents control by hierarchical SESE regions (cf. section 4.2) and data dependence by a modified version of SSA form. Similar to the program structure tree, the SESE regions of the DFG can be used to speed up data flow analysis, since irrelevant regions can be bypassed when propagating ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In ACM SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, N.M., June 1993.
....that propagating information about each variable to every node in a graph is inefficient, since not all nodes contain references or definitions of the symbol under consideration. A sparse representation, on the other hand, such as Static Single Assignment (SSA) 10] Dependence Flow Graphs (DFG) [11], or Program Dependence Graphs (PDG) 12] have all shown the virtue of operating on a sparse graph for analysis. The distinction between simple (all paths) constants and conditional constants can be seen in Figure 3. The simple value of y is determined to be constant only if both branches which ....
....a new name. Practically, however, this is undesirable (managing the symbol table explosion alone precludes this option) so the SSA properties are maintained by providing unique links between each use and its one definition. Instead of providing def use links as is the common implementation [3, 11], we provide use def links, giving rise to an SSA graph comprised of factored use def chains (FUD chains) This approach yields several advantages, such as constant space per node and an ideal form with which to perform demand driven analysis. We begin our analysis of programs within a framework ....
[Article contains additional citation context not shown here]
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 78--89, June 1993.
....live at each program point in parallel, leading to large tables. An alternative approach follows the procedure s dataflow graph instead, propagating along each def use arc a single piece of information describing that variable and avoiding the need to copy and update large tables [Choi et al. 91, Johnson Pingali 93, Weise et al. 94] This sort of analysis could work much better for analyses that track the flow of information along def use arcs, such as constant propagation, but they may not be appropriate for analyses where information flows across adjacent instructions that are unrelated in a dataflow ....
....their rules into one larger set of rules, enabling the analyses to examine and act on each other s intermediate results. Many researchers have explored issues in program representation and speeding program analysis [Ferrante et al. 87, Cytron et al. 89, Choi et al. 91, Dhamdhere et al. 92, Johnson Pingali 93, Weise et al. 94, Aiken Wimmers 92, Heintz 94, Jagannathan Weeks 95, Sreedhar et al. 96] Our work builds on a conventional control flow graph base, but it would be interesting to try to develop similar interfaces for client analyses that exploit the more advanced representations to run faster. ....
Richard Johnson and Keshav Pingali. Dependence-Based Program Analysis. SIGPLAN Notices, 28(6):78--89, June 1993. In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation.
....include subroutine inlining [CHT91] and construction of a interprocedural summary graph [Cal88] For the purposes of the analyses in this paper all subroutine calls have been inlined. ffl Substantial research has been devoted to improving the efficiency of solving data flow equations [CCF91, JP93] These approaches are complex to implement and do not improve the accuracy of the solution found. For these reasons, we have chosen to use the classical iterative algorithm. We are currently implementing our approach in a fortran preprocessor using the Stanford University Intermediate Form ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June 23--25, 1993. Published as ACM SIGPLAN Notices 28(6).
....approachs include subroutine inlining [CHT91] and construction of a interprocedural summary graph [Cal88] For the purposes of the analyses in this paper all subroutine calls have been inlined. ffl Substantial research has been devoted to improving the efficiency of solving data flow equations [CCF91, JP93]. These approaches are complex to implement and do not improve the accuracy of the solution found. For these reasons, we have chosen to use the classic iterative technique. We are currently implementing our approach in a fortran preprocessor using the Stanford University Intermediate Form (SUIF) ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June 23--25, 1993. Published as ACM SIGPLAN Notices 28(6). Beck, Plank, and Kingsley 18 Submitted to FTCS
....linear time complexity points to analysis by type inference. 1 Introduction In recent years, the trend in program representations for imperative programs has been to make them more functional, or to make them more sparse. However, new sparse representations [CFR 91, FOW87, PBJ 90, SKR90, JP93] have been non functional, and new functional representations [WCES94a, BMO90, Fie92] have not been sparse in the presence of pointer operations. In this paper, we present a functional representation that is sparse even in the presence of pointer operations. Permission to copy without fee all or ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June 23-25, 1993.
....As shown in the example a forwarding instruction is used for variable x along one of the paths to ensure this property. The details of the algorithm are omitted due to space limitations. The algorithm is based upon the notion of control equivalence and control dependence described in [6] [12]. An attempt is made to introduce minimum number of explicit forwarding instructions. Also by appropriate placement of forwarding instructions we will try to ensure that these instructions are only executed if it is essential, that is, techniques will be used to eliminate partial redundant ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. To appear in ACM SIGPLAN'93 PLDI, June 1993.
....et al. 11] sketch a single pass algorithm for generating SSA form but their algorithm requires a topologically sorted control flow graph and generates many unnecessary f assignments. A similar idea was exploited by Horwitz et al. 8] in the construction of dependence graphs. In a recent paper [9] Johnson and Pingali describe a method for computing the dependence flow graph of a program and deriving SSA form from it. They identify single entry single exit regions to place merge nodes which are similar to f assignments. Although their method is similar to ours in that it makes use of ....
JOHNSON, R., PINGALI, K. Dependence-based program analysis. In Proceedings of the SIGPLAN'93 Symposium on Programming Languages Design and Implementation(1993), 78-89.
.... representations (IR) that has attracted much attention (due to its simplicity and straightforward derivation from the AST) has been the Static Single Assignment (SSA) form [7] Many researchers has been working on improving the computational complexity of the construction of the minimal SSA form [7, 17, 27], and little attention has been paid to further reducing the size of the representation while maintaining the fundamental properties of SSA. Pruned SSA form [5] is the only variant of SSA known in the literature which is meant to be a representation smaller than the minimal SSA form. Gated Single ....
....subgraph on VFG in different settings. Demand driven representation of SSA form (with an extension to explicit cobegin coend parallelism) in Nascent [10] makes it closer to pruned SSA form than to SSA form. Johnson and Pingali s algorithm, based on Dependence Flow Graph (DFG) is O(E ) [17, 16, 27], where E is the number of edges in CFG. Cytron and Ferrante s algorithm in [6] based on path compression, is O(E ff(E ) 6] Cytron and Ferrante s algorithm visits CFG nodes in the reverse order of a depth first visit, which is used in the proof of correctness. Such an order of visit is ....
[Article contains additional citation context not shown here]
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 78--89, June 1993.
....with extensions. We have previously described how to use FUD chains for other scalar analysis methods, such as induction variable detection and constant propagation [11, 17] The concepts of FUD chains are described in Section 2. Other intermediate representations, such as dependence flow graphs [13] or the program dependence web [4] could also be used with similar algorithms; those representations contain enough information to find the actual dependences, though they do not represent the dependence relations explicitly. We note that reaching definitions is not sufficient, since it does not ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proc. ACM SIGPLAN '93 Conf. on Programming Language Design and Implementation, pages 78--89, Albuquerque, NM, June 1993.
....SSA representation is O(EV) CFR 91] SSA merges multiple definitions for forward data flow problems. However, it has two shortcomings: it does not represent merges for backward data flow problems, and it does not facilitate selection among merged data values. The dependence flow graph (DFG) JP93] representation adopts the use of nodes that merge multiple values in the forward direction, calling them merge nodes. It adds switch nodes (represented here by c) that use a variable to gate the flow of data onto one of many paths. Gated single assignment (GSA) BMO90,Hav93] adopts the single ....
Richard Johnson and Keshav Pingali. Dependence-Based Program Analysis. In PLDI, pages 78--89, 1993.
....single assignment form (SSA) for programs [6] see Section 3) If all we want is to detect redundant boxings, then very fast techniques are available [2] which run in time O(E log E) where E is the number of edges in the control flow graph. To detect useless boxings, a dependence flow graph (DFG) [14] can be built that links definitions to uses (this is the converse of a use def chains graph [15] as only possibly useful definitions are needed for building the DFG, useless ones will remain outside the DFG, and needn t give rise to any actual code. Apart from Henglein and J rgensen, ....
.... f , where f is a new function whose body is the former body of f (now, f has only one call site, i.e. the one in the body of f) Then proceed to call forward and return backward: as long as there is an argument x to f that is only used by unboxing operations (we can detect this on a DFG [14]) in f , say y : fst(x) and z : snd(x) generate the same unboxings just before the call site of f in f , replace the boxed argument x by the unboxed ones (here, y and z) both in the header of f and at its call site, and replace all uses of the unboxed variables in the body of f by ....
R. Johnson and K. Pingali. Dependence-based program analysis. In PLDI'93, pages 78--89, 1993.
....In a recent paper [JPP94] Johnson et al. introduced the Program Tree Structure (PST) for performing fast program analysis. The PST represents a program with a hierarchy of singleentry, single exit regions. Using the PST, Johnson in his thesis proposed an algorithm for updating dominator trees [Joh94] His approach is to identify regions, corresponding to subflowgraphs, where the dominance relation may no longer be correct because of a flowgraph edge update. Once a region is identified, he applies an exhaustive algorithm for all the nodes in this region. 7 Conclusion and Future Work We ....
Richard Johnson. Dependence Based Program Analysis. PhD thesis, Cornell University, Ithaca, New York, August 1994.
....both control flow paths leading to a node are executed. Hence, nodes allow the explicit representation of control parallelism. Dataflow and SSA Even with use def chains as Stoltz et al. 60] recommend, SSA form does not support solving backward data flow problems. Johnson and Pingali [41] devised the dependence flow graph (DFG) to support forward and backward data flow. The algorithm to construct DFGs finds single entry single exit (SESE) regions in the CFG. The single entry edge and the single exit edge of a SESE regions have the same control dependences. Switch nodes are ....
....as necessary, but GSA form s specialized (or high level) nodes have a fixed number of arguments. Hence, a single OE node in SSA form becomes a tree of specialized OE nodes in GSA form. The third step converts from GSA form to a PDW by inserting switch nodes (similar to those in Johnson and Pingali [41]) Switch nodes are inserted symmetrically to fl nodes. The authors do not expect transforms to operate over the entire PDW. Instead, they define an interface that provides subgraphs called Interpretable Program Graphs (IPGs) They define three IPGs: the control IPG which includes only control ....
R. Johnson and K. Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, Albuquerque, NM, June 1993.
....Although this paper describes the value range propagation method using the SSA form and it s associated terminology, it can be implemented using any factored dataflow representation with a static single assignment property. In fact, my actual implementation uses a dependence flow graph [JohnsonPingali93] where the variables have been renamed to achieve single assignment. 3 Algorithm Overview 3.1 Objective The objective of any branch prediction algorithm is to determine the likelihood of taking each conditional branch in a program. Most heuristic methods simply mark each branch as either taken ....
Richard Johnson and Kershav Pingali. Dependence-Based Program Analysis. Proceedings of the SIGPLAN `93 Conference on Programming Language Design and Implementation, June 1993, pages 78-89.
....In a recent paper [JPP94] Johnson et al. introduced the Program Tree Structure (PST) for performing fast program analysis. The PST represents a program with a hierarchy of single entry, single exit regions. Using the PST, Johnson in his thesis proposed an algorithm for updating dominator trees [Joh94] His approach is to identify regions, corresponding to sub flowgraphs, where the dominance relation may no longer be correct because of a flowgraph edge update. Once a region is identified, he applies an exhaustive algorithm for all the nodes in this region. Obviously, in the worst case there ....
Richard Johnson. Dependence Based Program Analysis. PhD thesis, Cornell University, Ithaca, New York, August 1994.
....in that it is applicable to all monotone data flow analysis problems. Previous approaches to avoid unnecessary evaluations of data flow equations include the methods based on static single assignment form [WZ85, AWZ88, RWZ88, CLZ86] sparse evaluation graphs [CCF90] and dependence flow graphs [JP93] The idea behind these approaches is to by pass some of the unnecessary equation evaluations by manipulating the underlying graphical program representation. We show that, by viewing the problem as an algebraic problem of congruence relations, our approach allows for conceptually simple ....
....graph that enables a fast evaluation of the solution. However, this method is restricted to partitionable data flow problems that permit the analysis of each variable partition in isolation. The global value graph [RL77, RT82] static single assignment form (SSA) SS70] and dependence flow graphs [JP93] are graphical representations that provide connections between definitions and uses of program variables. SSA form is constructed in O(e n 2 ) time based on dominance frontiers [CFR 91] and in O(e Theta ff(e) time based on a recent algorithm [CF93] The benefits of using SSA for data ....
R. Johnson and K. Pingali. Dependence-based program analysis. In Proc. ACM SIGPLAN '93 Conf. on Programming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June 1993.
....We also support parallelism by extending the traditional SSA form into languages with parallel constructs. 1 Introduction The Static Single Assignment (SSA) form for intermediate program flow representation has become a popular and powerful framework with which to analyze and optimize code [3, 7, 14, 21, 25]. SSA form has been used to simplify optimization techniques and data flow problems including constant propagation [25] global value numbering [21] and induction variable detection [26] among others. Static Single Assignment form is based upon a program represented as a control flow graph. A ....
....details are provided in the paper by Cytron et al. 5] Although this traditional SSA form renames variables uniquely at every definition point, it is not really practical (and certainly not desirable) to add new names to the symbol table for all assignments. Thus, the common implementation [5, 14, 25] actually provides def use links [1] for each new definition (see Figure 2) Since each use is the head of exactly one link, the semantics of SSA are preserved. The def use chain style of SSA implementation lends itself well to forward data flow problems [20, 25] due to consistency of direction ....
[Article contains additional citation context not shown here]
Richard Johnson and Keshav Pingali. Dependence -based program analysis. In ACM SIGPLAN Conference on Programming Language Design and Implementation, 1993.
....to an implementation in hardware is translation of the program into a form that makes scheduling of operations and allocation of resources manageable. For this purpose we use an intermediate form, the dependence flow graph, originally developed for use in parallelizing compilers [Bec92, JP93] In a previous high level synthesis system we successfully used dependence flow graphs as an intermediate form for synthesis [Cha94, CBL92, LCA 93, LAL 91] Dependence flow graphs model the data, resource, and control dependences present in a program. In contrast, most current high level ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the 1993 SIGPLAN Conference on Program Design and Implementation. ACM Press, 1993.
No context found.
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 ConferenceonProgramming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June23(e 1993( ACM Transactions on Computational Logic, Vol. V, No. N, January 2003.
....path compression and other complications, and could not compete with the Cytron et al. algorithm in practice. Johnson and Pingali showed how the dependence flow graph [PBJ 91] can be used to compute J sets in O(jEj) time per variable, but this approach was not competitive in practice either [JP93] Sreedhar and Gao described another approach which traversed the dominator tree of the program to compute J sets on demand [SG95] This algorithm requires O(jEj) preprocessing time, preprocessing space and query time, and it is easy to implement. Although they reported that this algorithm ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June 23--25, 1993.
....10 the size of the (statement level) CFG. Since QPGs are often so small relative to the size of the CFG, it is a significant savings that our algorithm does not examine transparent regions. In a previous paper, we discussed a representation of dependences called the dependence flow graph(DFG) JP93] Intuitively, the DFG is a set of basis graphs from which we can construct the QPG for a given data flow problem. For lack of space, we postpone discussion of this connection. In principle, the PST (or QPG) can be used to perform data flow analysis in parallel as is standard with divide ....
Richard Johnson and Keshav Pingali. Dependencebased program analysis. In Proceedings of the SIGPLAN '93 Conferenceon ProgrammingLanguageDesign and Implementation, pages 78--89, Albuquerque, New Mexico, June 23--25, 1993.
....of a program in linear time, which improves the quadratic time complexity of the most commonly used algorithm, due to Cytron, Ferrante, Rosen, Wegman and Zadeck [30] 2. Pingali and his students have designed an optimal solution to the problem of determining control dependence equivalence classes [59]. This algorithm is being used at Microsoft by Daniel Weise s group; for some programs, it speeds up SESE region determination by a factor of 40 over previous algorithms (personal communication from Roger Crew) Flavors Technology Inc. is using this algorithm for SESE region determination ....
.... the dependence flow graph (DFG) which is an executable representation of program dependences, and which can be used to perform a variety of forward and backward dataflow analysis, such as constant propagation, elimination of partial redundancies, and strength reduction, using sparse techniques [58,59]. The DFG is being used as an internal representation of digital circuits by Miriam Leeser s logic synthesis and verification group in the EE department at Cornell University; this group uses the DFG tool kit implemented by Pingali s research group [19, 64] In the area of automatic restructuring ....
[Article contains additional citation context not shown here]
R. Johnson and K. Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN 93 Conference on Programming Language Design and Implementation, pages 78--89, Alburquerque, New Mexico, June 1993.
....to know if two nodes have the same set of control dependences. One such application, discussed in more detail in Section 5, is the determination of single entry single exit (SESE) regions of a control flow graph, which in turn can be used to build the dependence flow graph or SSA form of a program [JP93]. These representations permit efficient optimization of programs. Another application of the control dependence equivalence relation is in global scheduling of instructions for pipelined machines [GS87] Techniques for basic block scheduling can be extended immediately to a set of basic blocks ....
....that reduces CDj to CYC j . Theorem 1 Let S be the strongly connected component constructed by adding an edge end start to a control flow graph G . Nodes a; b in G have the same set of control dependences iff a; b are cycle equivalent in S. 2 This algorithm was sketched in an earlier paper [JP93] but there was not enough room in the margin for a complete description and proof. Proof: by contradiction) 1. We show that if there is a cycle in S containing a but not b, then a and b do not have the same control dependences. This is done by showing that any such cycle must contain a node p ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June 23--25, 1993. Published as ACM SIGPLAN Notices 28(6).
....complications, and could not compete with the quadratic time algorithm in practice. Johnson and Pingali showed how the dependence flow graph [PBJ 91] can be used to compute the SSA form in O(jEj) time per variable, but this approach was not competitive with the quadratic time algorithm either [JP93] Sreedhar and Gao described another approach which traversed the dominator tree of the program to compute OE sets on demand [SG95] This algorithm requires O(jEj) preprocessing time, preprocessing space and query time, and it is easy to implement. Although they reported that this algorithm ....
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, New Mexico, June 23--25, 1993.
....j) many attempts have been made to construct more compact representations of the control dependence relation [Ball 1993; Cytron ACM Transactions on Programming Languages and Systems, Vol. 19, No. 3, May 1997. Optimal Control Dependence Computation Delta 5 et al. 1990; Ferrante et al. 1987; Johnson and Pingali 1993; Sreedhar et al. 1994] The lack of success led Cytron et al. to conjecture that any data structure that provided proportional time access to control dependence sets must use space that grows quadratically with program size. In this article, we describe a data structure called the Augmented ....
Johnson, R. and Pingali, K. 1993. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation. ACM, New York, 78--89.
No context found.
R. Johnson and K. Pingali. Dependence-based program analysis. In PLDI, pages 78 -- 89, June 1993.
No context found.
R. Johnson and K. Pingali. Dependence-based program analysis. In Proc. Sigplan'93 PLDI, pages 78--89, 1993. Published as ACM SIGPLAN Notices 28(6).
No context found.
Johnson, R., Pingali, K.: Dependence-based program analysis. In: PLDI'93, 1993, 78--89.
No context found.
Richard Johnson and Keshav Pingali. Dependence based program analysis. In pages 78-89, 1993.
No context found.
R. Johnson and K. Pingali. Dependence-based program analysis. In Proc. the SIGPLAN '93 ConferenceonProgram Language Design and Implementation,June1993.
No context found.
R. Johnson and K. Pingali. Dependence-based program analysis. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 78--89, Albuquerque, New Mexico, June 1993.
No context found.
R. Johnson and K. Pingali. Dependence-based program analysis. In Language Design and Implementation (PLDI), pages 78-89, Albuquerque, New Mexico, June 1993.
No context found.
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the conference on Programming language design and implementation, pages 78--89. ACM Press, 1993. ISBN 0-89791-598-4.
No context found.
Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 78--89, Albuquerque, NM, June 1993.
First 50 documents Next 50
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