Dependence flow graphs: an algebraic approach to program dependencies

Keshav Pingali, Micah Beck, Richard Johnson, Mayan Moudgill, Paul Stodghill
1991 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '91  
The topic of intermediate languages for optimizing and parallelizing compilers has received much attention lately. In this paper, we argue that any good representation of a program must have two crucial properties: first, it must be a data structure that can be rapidly traversed to determine dependence information, and second this representation must be a program in its own right, with a parallel, local model of execution. In this paper, we illustrate the importance of these points by examining
more » ... algorithms for a standard optimization -global constant propagation. We discuss the problems in working with current representations. Then, we propose a novel representation called the dependence flow graph which has each of the properties mentioned above. We show that this representation leads to a simple algorithm, based on abstract interpretation, for solving the constant propagation problem. Our algorithm is simpler than, and as efficient as, the best known algorithms for this problem. An interesting feature of our representation is that it naturally incorporates the best aspects of many other representations, including continuation-passing style, data and program dependence graphs, static single assignment form and dataflow program graphs.
doi:10.1145/99583.99595 dblp:conf/popl/PingaliBJMS91 fatcat:rkmzwkv7lbcydjcu2hf7n72h4m