## The Semantics of Program Dependence (1989)

Venue: | Proceedings of the ACM SIGPLAN 89 Conference on Programming Language Design and Implementation |

Citations: | 64 - 0 self |

### BibTeX

@INPROCEEDINGS{Cartwright89thesemantics,

author = {Robert Cartwright and Matthias Felleisen},

title = {The Semantics of Program Dependence},

booktitle = {Proceedings of the ACM SIGPLAN 89 Conference on Programming Language Design and Implementation},

year = {1989},

pages = {13--27}

}

### Years of Citing Articles

### OpenURL

### Abstract

Optimizing and parallelizing compilers for procedural languages rely on various forms of program dependence graphs (pdgs) to express the essential control and data dependences among atomic program operations. In this paper, we provide a semantic justification for this practice by deriving two different forms of program dependence graph---the output pdg and the def-order pdg---and their semantic definitions from non-strict generalizations of the denotational semantics of the programming language. In the process, we demonstrate that both the output pdg and the def-order pdg (with minor technical modifications) are conventional data-flow programs. In addition, we show that the semantics of the def-order pdg dominates the semantics of the output pdg and that both of these semantics dominate---rather than preserve---the semantics of sequential execution. 1 Program Dependence Graphs Optimizing and parallelizing compilers for procedural languages rely on intermediate graph representations t...

### Citations

856 | The program dependence graph and its use in optimization
- Ferrante, Ottenstein, et al.
- 1987
(Show Context)
Citation Context ...es in the literature are the control flow graph, the call graph, the def-use chain [1], the data dependence graph [7], and the extended data-flow graph [2]. Recently, Ferrante, Ottenstein, and Warren =-=[3]-=- proposed a comprehensive graph representation called the program dependence graph (pdg) that is suitable for scalar optimization [3, 8], vectorization [14], and general parallelization [15]. Subseque... |

449 |
Optimizing Supercompilers for Supercomputers
- Wolfe
- 1989
(Show Context)
Citation Context ...and Warren [3] proposed a comprehensive graph representation called the program dependence graph (pdg) that is suitable for scalar optimization [3, 8], vectorization [14], and general parallelization =-=[15]-=-. Subsequently, Horwitz, Prins, and Reps [4] revised the pdg representation and used it as a basis for integrating program revisions. We refer to the original pdg [3] as the output pdg and to the revi... |

342 |
Denotational Semantics – A Methodology for Language Development
- Schmidt
- 1986
(Show Context)
Citation Context ...y to decouple disjoint update operations is to replace the strict store update operation \Delta[\Delta / \Delta] by a lazy alternative \Delta[\Delta ( \Delta] that is non-strict in the third argument =-=[9]-=-. The lazy update operation is defined by the following rules: oe[x ( v](z) = 8 ! : ? x = ? oe(z) z 6= xsx 6= ? v z = xsz 6= ? for all oe, x, v, z. Under this interpretation, an assignment statement o... |

241 | Reps T.: Integrating Noninterfering Versions of Programs - Horwitz, Prins |

232 |
Dependence graphs and compiler optimizations
- Kuck, Kuhn, et al.
- 1981
(Show Context)
Citation Context ...ntial control and data dependences of atomic program operations. Some prominent examples in the literature are the control flow graph, the call graph, the def-use chain [1], the data dependence graph =-=[7]-=-, and the extended data-flow graph [2]. Recently, Ferrante, Ottenstein, and Warren [3] proposed a comprehensive graph representation called the program dependence graph (pdg) that is suitable for scal... |

59 | On the adequacy of program dependence graphs for representing programs
- Horwitz, Prins, et al.
(Show Context)
Citation Context ... representation called the program dependence graph (pdg) that is suitable for scalar optimization [3, 8], vectorization [14], and general parallelization [15]. Subsequently, Horwitz, Prins, and Reps =-=[4]-=- revised the pdg representation and used it as a basis for integrating program revisions. We refer to the original pdg [3] as the output pdg and to the revised form [4] as the def-order pdg. A program... |

52 |
Deriving target code as a representation of continuation semantics
- Wand
- 1982
(Show Context)
Citation Context ...s are a form of parallel intermediate code that can be derived from a demand-oriented denotational semantics just as compilers and machine code can be derived from conventional denotational semantics =-=[6, 11, 12, 13]-=-. This section presents the results of that inquiry. In the first subsection, we show that a 10 simple reformulation of a denotational definition exposes the data demands of expressions, revealing the... |

38 |
Compilers and staging transformations
- Jørring, Scherlis
- 1986
(Show Context)
Citation Context ...s are a form of parallel intermediate code that can be derived from a demand-oriented denotational semantics just as compilers and machine code can be derived from conventional denotational semantics =-=[6, 11, 12, 13]-=-. This section presents the results of that inquiry. In the first subsection, we show that a 10 simple reformulation of a denotational definition exposes the data demands of expressions, revealing the... |

30 |
A hierachical basis for reordering transformations
- Warren
- 1984
(Show Context)
Citation Context .... Recently, Ferrante, Ottenstein, and Warren [3] proposed a comprehensive graph representation called the program dependence graph (pdg) that is suitable for scalar optimization [3, 8], vectorization =-=[14]-=-, and general parallelization [15]. Subsequently, Horwitz, Prins, and Reps [4] revised the pdg representation and used it as a basis for integrating program revisions. We refer to the original pdg [3]... |

25 |
Semantics-Directed Machine Architecture
- Wand
- 1982
(Show Context)
Citation Context ...s are a form of parallel intermediate code that can be derived from a demand-oriented denotational semantics just as compilers and machine code can be derived from conventional denotational semantics =-=[6, 11, 12, 13]-=-. This section presents the results of that inquiry. In the first subsection, we show that a 10 simple reformulation of a denotational definition exposes the data demands of expressions, revealing the... |

16 |
A rewriting semantics for program dependence graphs
- Selke
- 1989
(Show Context)
Citation Context ...meaning. But no attempt has been made to provide a semantic justification for the program optimization process based on dependence analysis. This paper, in conjunction with a companion paper by Selke =-=[10]-=-, tackles the first three questions in the preceding list and presents three results: 1. The output pdg and def-order pdg representations [3, 4] for a program---with some minor technical modifications... |

8 |
A program form based on data dependency in predicate regions
- Ferrante, Ottenstein
- 1983
(Show Context)
Citation Context ...atomic program operations. Some prominent examples in the literature are the control flow graph, the call graph, the def-use chain [1], the data dependence graph [7], and the extended data-flow graph =-=[2]-=-. Recently, Ferrante, Ottenstein, and Warren [3] proposed a comprehensive graph representation called the program dependence graph (pdg) that is suitable for scalar optimization [3, 8], vectorization ... |

8 |
Loops in combinator-based compilers
- Wand
- 1983
(Show Context)
Citation Context |

5 |
An intermediate program form based on a cyclic datadependence graph
- Ottenstein
- 1981
(Show Context)
Citation Context ...ed data-flow graph [2]. Recently, Ferrante, Ottenstein, and Warren [3] proposed a comprehensive graph representation called the program dependence graph (pdg) that is suitable for scalar optimization =-=[3, 8]-=-, vectorization [14], and general parallelization [15]. Subsequently, Horwitz, Prins, and Reps [4] revised the pdg representation and used it as a basis for integrating program revisions. We refer to ... |