LLVM 22.0.0git
llvm::DataDependenceGraph Class Reference

Data Dependency Graph. More...

#include "llvm/Analysis/DDG.h"

Inheritance diagram for llvm::DataDependenceGraph:
[legend]

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 PiBlockDDGNodegetPiBlock (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)
DGraphTypeoperator= (const DGraphType &G)
DGraphTypeoperator= (const DGraphType &&G)
const_iterator begin () const
const_iterator end () const
iterator begin ()
iterator end ()
const DDGNodefront () const
DDGNodefront ()
const DDGNodeback () const
DDGNodeback ()
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.
DDGNodegetRoot () 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
DDGNodeRoot

Detailed Description

Data Dependency Graph.

Definition at line 307 of file DDG.h.

Member Typedef Documentation

◆ EdgeType

Definition at line 313 of file DDG.h.

◆ NodeType

Definition at line 312 of file DDG.h.

Constructor & Destructor Documentation

◆ DataDependenceGraph() [1/5]

llvm::DataDependenceGraph::DataDependenceGraph ( )
delete

◆ DataDependenceGraph() [2/5]

llvm::DataDependenceGraph::DataDependenceGraph ( const DataDependenceGraph & G)
delete

References DataDependenceGraph(), and G.

◆ DataDependenceGraph() [3/5]

llvm::DataDependenceGraph::DataDependenceGraph ( DataDependenceGraph && G)
inline

Definition at line 317 of file DDG.h.

References DataDependenceGraph(), G, and llvm::move().

◆ DataDependenceGraph() [4/5]

◆ DataDependenceGraph() [5/5]

◆ ~DataDependenceGraph()

DataDependenceGraph::~DataDependenceGraph ( )

Definition at line 212 of file DDG.cpp.

References N, and llvm::DirectedGraph< DDGNode, DDGEdge >::Nodes.

Member Function Documentation

◆ addNode()

bool DataDependenceGraph::addNode ( NodeType & N)
protected

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.

◆ getPiBlock()

const PiBlockDDGNode * DataDependenceGraph::getPiBlock ( const NodeType & N) const

If node N belongs to a pi-block return a pointer to the pi-block, otherwise return null.

Definition at line 243 of file DDG.cpp.

References assert(), and N.

◆ DDGBuilder

friend class DDGBuilder
friend

Definition at line 309 of file DDG.h.

References DDGBuilder.

Referenced by DataDependenceGraph(), DataDependenceGraph(), and DDGBuilder.


The documentation for this class was generated from the following files: