Abstract
Recently the Program Dependence Graph (PDG) has been shown useful as a basis for solving a variety of problems, including optimization [FOW87], vectorization [BB89], translation to dataflow machines [OBM90], code generation for VLIW machines [GS87a, GS87b], program transformation [Se189, CF89], merging versions of programs [HPR87], and automatic detection and management of parallelism [ABC*87, ABC*88, CFS89]. The edges of the PDG consist of control dependence and data dependence edges. The data dependence edges represent the essential data flow relationships of a program [Kuc?‘~]. In this paper, we examine the control dependence aspect of the PDG, which summarizes essential control flow relationships in a program. Informally, for nodes X and Y in CFG, Y is control dependent on X if during execution, X can directly affect whether Y is executed. We improve the space and time required to compute those aspects of control dependence used by m9st algorithms, We assume ‘a control flow graph CFG is augmented wit,h an entry node (START), an exit node (STOP), and an edge from START to STOP. An example control flow graph is shown in Figure 1 and its control dependence graph is given in Figure 2. Let 1V and E be the number of nodes and edges respectively in CFG. Multiple outgoing edges from a node in CFG are assumed to be distinctly labelled.’ We further assume that for any node X in CFG there exists a path from START to X and a path from X to STOP. To define control dependence formally, we first recall the notion of postdominance [FOW87]. Let X and Y be nodes in CFG. If X # Y appears ou every path from Y to STOP, then X postdominates Y, denoted X >> Y. We write X >> Y if X = Y or X >> Y. The immediate postdominator of Y is the closest postdominator of Y on any path from Y to STOP.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have