[DDG] Data Dependence Graph - Root Node
authorBardia Mahjour <bmahjour@ca.ibm.com>
Tue, 1 Oct 2019 19:32:42 +0000 (19:32 +0000)
committerBardia Mahjour <bmahjour@ca.ibm.com>
Tue, 1 Oct 2019 19:32:42 +0000 (19:32 +0000)
commit91b62d5c89ef7ca5b1101e8006513a0af88ccb96
tree3924143c702513e96cec53eca9edf91a5b1b4891
parentbcab95182b3745960851c723c018268c2534d6a3
[DDG] Data Dependence Graph - Root Node

Summary:
This patch adds Root Node to the DDG. The purpose of the root node is to create a single entry node that allows graph walk iterators to iterate through all nodes of the graph, making sure that no node is left unvisited during a graph walk (eg. SCC or DFS). Once the DDG is fully constructed it will have exactly one root node. Every node in the graph is reachable from the root. The algorithm for connecting the root node is based on depth-first-search that keeps track of visited nodes to try to avoid creating unnecessary edges.

Authored By: bmahjour

Reviewer: Meinersbur, fhahn, myhsu, xtian, dmgreen, kbarton, jdoerfert

Reviewed By: Meinersbur

Subscribers: ychen, arphaman, simoll, a.elovikov, mgorny, hiraditya, jfb, wuzish, llvm-commits, jsji, Whitney, etiotto, ppc-slack

Tag: #llvm

Differential Revision: https://reviews.llvm.org/D67970

llvm-svn: 373386
llvm/include/llvm/Analysis/DDG.h
llvm/include/llvm/Analysis/DependenceGraphBuilder.h
llvm/lib/Analysis/DDG.cpp
llvm/lib/Analysis/DependenceGraphBuilder.cpp
llvm/test/Analysis/DDG/root-node.ll [new file with mode: 0644]