LLVM: llvm::PiBlockDDGNode Class Reference (original) (raw)

Subclass of DDGNode representing a pi-block. More...

#include "[llvm/Analysis/DDG.h](DDG%5F8h%5Fsource.html)"

Public Types
using PiNodeList = SmallVector<DDGNode *, 4>
Public Types inherited from llvm::DDGNode
enum class NodeKind { Unknown, SingleInstruction, MultiInstruction, PiBlock, Root }
using InstructionListType = SmallVectorImpl<Instruction *>
Public Types inherited from llvm::DGNode< DDGNode, DDGEdge >
using EdgeListTy
using iterator
using const_iterator
Public Member Functions
PiBlockDDGNode ()=delete
PiBlockDDGNode (const PiNodeList &List)
PiBlockDDGNode (const PiBlockDDGNode &N)
PiBlockDDGNode (PiBlockDDGNode &&N)
~PiBlockDDGNode () override
PiBlockDDGNode & operator= (const PiBlockDDGNode &N)=default
PiBlockDDGNode & operator= (PiBlockDDGNode &&N)
const PiNodeList & getNodes () const
Get the list of nodes in this pi-block.
PiNodeList & getNodes ()
Public Member Functions inherited from llvm::DDGNode
DDGNode ()=delete
DDGNode (const NodeKind K)
DDGNode (const DDGNode &N)=default
DDGNode (DDGNode &&N)
virtual ~DDGNode ()=0
DDGNode & operator= (const DDGNode &N)=default
DDGNode & operator= (DDGNode &&N)
NodeKind getKind () const
Getter for the kind of this node.
bool collectInstructions (llvm::function_ref< bool(Instruction *)> const &Pred, InstructionListType &IList) const
Collect a list of instructions, in IList, for which predicate Pred evaluates to true when iterating over instructions of this node.
Public Member Functions inherited from llvm::DGNode< DDGNode, DDGEdge >
DGNode (DDGEdge &E)
Create a node with a single outgoing edge E.
DGNode ()=default
const_iterator begin () const
const_iterator end () const
iterator begin ()
iterator end ()
const DDGEdge & front () const
DDGEdge & front ()
const DDGEdge & back () const
DDGEdge & back ()
bool findEdgesTo (const DDGNode &N, SmallVectorImpl< DDGEdge * > &EL) const
Collect in EL, all the edges from this node to N.
bool addEdge (DDGEdge &E)
Add the given edge E to this node, if it doesn't exist already.
void removeEdge (DDGEdge &E)
Remove the given edge E from this node, if it exists.
bool hasEdgeTo (const DDGNode &N) const
Test whether there is an edge that goes from this node to N.
const EdgeListTy & getEdges () const
Retrieve the outgoing edges for the node.
EdgeListTy & getEdges ()
void clear ()
Clear the outgoing edges.
Static Public Member Functions
static bool classof (const DDGNode *N)
Define classof to be able to use isa<>, cast<>, dyn_cast<>, etc.
Additional Inherited Members
Protected Member Functions inherited from llvm::DDGNode
void setKind (NodeKind K)
Setter for the kind of this node.
Protected Member Functions inherited from llvm::DGNode< DDGNode, DDGEdge >
bool isEqualTo (const DDGNode &N) const
DDGNode & getDerived ()
const DDGNode & getDerived () const
const_iterator findEdgeTo (const DDGNode &N) const
Find an edge to N.
Protected Attributes inherited from llvm::DGNode< DDGNode, DDGEdge >
EdgeListTy Edges

Subclass of DDGNode representing a pi-block.

A pi-block represents a group of DDG nodes that are part of a strongly-connected component of the graph. Replacing all the SCCs with pi-blocks results in an acyclic representation of the DDG. For example if we have: {a -> b}, {b -> c, d}, {c -> a} the cycle a -> b -> c -> a is abstracted into a pi-block "p" as follows: {p -> d} with "p" containing: {a -> b}, {b -> c}, {c -> a}

Definition at line 167 of file DDG.h.

PiNodeList

llvm::PiBlockDDGNode::PiBlockDDGNode ( ) delete

PiBlockDDGNode() [2/4]

PiBlockDDGNode::PiBlockDDGNode ( const PiNodeList & List )

PiBlockDDGNode() [3/4]

PiBlockDDGNode() [4/4]

~PiBlockDDGNode()

PiBlockDDGNode::~PiBlockDDGNode ( ) override

classof()

getNodes() [1/2]

PiNodeList & llvm::PiBlockDDGNode::getNodes ( ) inline

Definition at line 190 of file DDG.h.

References PiBlockDDGNode().

getNodes() [2/2]

const PiNodeList & llvm::PiBlockDDGNode::getNodes ( ) const inline

Get the list of nodes in this pi-block.

Definition at line 186 of file DDG.h.

References assert().

operator=() [1/2]

References N, and PiBlockDDGNode().

operator=() [2/2]


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