LLVM 22.0.0git
|
Data Dependency Graph. More...
#include "llvm/Analysis/DDG.h"
Public Types | |
using | NodeType = DDGNode |
using | EdgeType = DDGEdge |
Public Types inherited from llvm::DirectedGraph< DDGNode, DDGEdge > | |
using | iterator |
using | const_iterator |
using | DGraphType |
Public Types inherited from llvm::DependenceGraphInfo< DDGNode > | |
using | DependenceList |
Public Member Functions | |
DataDependenceGraph ()=delete | |
DataDependenceGraph (const DataDependenceGraph &G)=delete | |
DataDependenceGraph (DataDependenceGraph &&G) | |
DataDependenceGraph (Function &F, DependenceInfo &DI) | |
DataDependenceGraph (Loop &L, LoopInfo &LI, DependenceInfo &DI) | |
~DataDependenceGraph () | |
const PiBlockDDGNode * | getPiBlock (const NodeType &N) const |
If node N belongs to a pi-block return a pointer to the pi-block, otherwise return null. | |
Public Member Functions inherited from llvm::DirectedGraph< DDGNode, DDGEdge > | |
DirectedGraph ()=default | |
DirectedGraph (DDGNode &N) | |
DirectedGraph (const DGraphType &G) | |
DirectedGraph (DGraphType &&RHS) | |
DGraphType & | operator= (const DGraphType &G) |
DGraphType & | operator= (const DGraphType &&G) |
const_iterator | begin () const |
const_iterator | end () const |
iterator | begin () |
iterator | end () |
const DDGNode & | front () const |
DDGNode & | front () |
const DDGNode & | back () const |
DDGNode & | back () |
size_t | size () const |
const_iterator | findNode (const DDGNode &N) const |
Find the given node N in the table. | |
iterator | findNode (const DDGNode &N) |
bool | addNode (DDGNode &N) |
Add the given node N to the graph if it is not already present. | |
bool | findIncomingEdgesToNode (const DDGNode &N, SmallVectorImpl< DDGEdge * > &EL) const |
Collect in EL all edges that are coming into node N . | |
bool | removeNode (DDGNode &N) |
Remove the given node N from the graph. | |
bool | connect (DDGNode &Src, DDGNode &Dst, DDGEdge &E) |
Assuming nodes Src and Dst are already in the graph, connect node Src to node Dst using the provided edge E . | |
Public Member Functions inherited from llvm::DependenceGraphInfo< DDGNode > | |
DependenceGraphInfo ()=delete | |
DependenceGraphInfo (const DependenceGraphInfo &G)=delete | |
DependenceGraphInfo (const std::string &N, const DependenceInfo &DepInfo) | |
DependenceGraphInfo (DependenceGraphInfo &&G) | |
virtual | ~DependenceGraphInfo ()=default |
StringRef | getName () const |
Return the label that is used to name this graph. | |
DDGNode & | getRoot () const |
Return the root node of the graph. | |
bool | getDependencies (const DDGNode &Src, const DDGNode &Dst, DependenceList &Deps) const |
Collect all the data dependency infos coming from any pair of memory accesses from Src to Dst , and store them into Deps . | |
std::string | getDependenceString (const DDGNode &Src, const DDGNode &Dst) const |
Return a string representing the type of dependence that the dependence analysis identified between the two given nodes. |
Protected Member Functions | |
bool | addNode (NodeType &N) |
Add node N to the graph, if it's not added yet, and keep track of the root node as well as pi-blocks and their members. |
Friends | |
class | DDGBuilder |
Additional Inherited Members | |
Protected Types inherited from llvm::DirectedGraph< DDGNode, DDGEdge > | |
using | NodeListTy |
using | EdgeListTy |
Protected Attributes inherited from llvm::DirectedGraph< DDGNode, DDGEdge > | |
NodeListTy | Nodes |
Protected Attributes inherited from llvm::DependenceGraphInfo< DDGNode > | |
std::string | Name |
const DependenceInfo | DI |
DDGNode * | Root |
|
delete |
Referenced by DataDependenceGraph(), and DataDependenceGraph().
|
delete |
References DataDependenceGraph(), and G.
|
inline |
Definition at line 317 of file DDG.h.
References DataDependenceGraph(), G, and llvm::move().
DataDependenceGraph::DataDependenceGraph | ( | Function & | F, |
DependenceInfo & | DI ) |
Definition at line 186 of file DDG.cpp.
References llvm::append_range(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), D(), DDGBuilder, llvm::DependenceGraphInfo< DDGNode >::DependenceGraphInfo(), llvm::SmallVectorTemplateCommon< T, typename >::end(), F, llvm::DependenceGraphInfo< DDGNode >::getName(), llvm::make_range(), llvm::scc_begin(), and llvm::scc_end().
DataDependenceGraph::DataDependenceGraph | ( | Loop & | L, |
LoopInfo & | LI, | ||
DependenceInfo & | DI ) |
Definition at line 197 of file DDG.cpp.
References llvm::append_range(), llvm::LoopBlocksDFS::beginRPO(), D(), DDGBuilder, llvm::DependenceGraphInfo< DDGNode >::DependenceGraphInfo(), llvm::LoopBlocksDFS::endRPO(), llvm::DependenceGraphInfo< DDGNode >::getName(), getParent(), llvm::make_range(), and llvm::LoopBlocksDFS::perform().
DataDependenceGraph::~DataDependenceGraph | ( | ) |
Definition at line 212 of file DDG.cpp.
References N, and llvm::DirectedGraph< DDGNode, DDGEdge >::Nodes.
Add node N
to the graph, if it's not added yet, and keep track of the root node as well as pi-blocks and their members.
Return true if node is successfully added.
Definition at line 220 of file DDG.cpp.
References llvm::DirectedGraph< DDGNode, DDGEdge >::addNode(), assert(), llvm::dyn_cast(), llvm::isa(), N, and llvm::DependenceGraphInfo< DDGNode >::Root.
const PiBlockDDGNode * DataDependenceGraph::getPiBlock | ( | const NodeType & | N | ) | const |
|
friend |
Definition at line 309 of file DDG.h.
References DDGBuilder.
Referenced by DataDependenceGraph(), DataDependenceGraph(), and DDGBuilder.