Program dependence graph
{{Short description|Representation of graph notation}}
{{Multiple issues|
{{refimprove|date=May 2016}}
{{tone|date=October 2012}}
{{technical|date=October 2012}}
}}
File:Program-dependency-graph.svg to a remote URL]]
A Program Dependence Graph (PDG) is a directed graph of a program's control and data dependencies. Nodes represent program statements and edges represent dependencies between these statements.
PDGs are used in optimization, debugging, and understanding program behavior. One example of this is their utilization by compilers during dependence analysis, enabling the optimizing compiler to make transformations to allow for parallelism.{{cite journal |author=Jeanne Ferrante |last2=Ottenstein |first2=Karl J. |last3=Warren |first3=Joe D. |date=July 1987 |title=The Program Dependence Graph and its Use in Optimization |url=https://www.cs.utexas.edu/~pingali/CS395T/2009fa/papers/ferrante87.pdf |journal=ACM Transactions on Programming Languages and Systems |language=en |volume=9 |issue=3 |pages=319–349 |citeseerx=10.1.1.101.27 |doi=10.1145/24039.24041 |s2cid=505075}}{{Cite web |title=Dependence Graphs in LLVM — LLVM 19.0.0git documentation |url=https://llvm.org/docs/DependenceGraphs/index.html |access-date=2024-06-26 |website=llvm.org}}