LLVM 22.0.0git
|
Subclass of DDGNode representing a pi-block. More...
#include "llvm/Analysis/DDG.h"
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 () | |
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) |
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 | |
DGNode (const DGNode< DDGNode, DDGEdge > &N) | |
DGNode (DGNode< DDGNode, DDGEdge > &&N) | |
DGNode< DDGNode, DDGEdge > & | operator= (const DGNode< DDGNode, DDGEdge > &N) |
DGNode< DDGNode, DDGEdge > & | operator= (const DGNode< DDGNode, DDGEdge > &&N) |
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}
using llvm::PiBlockDDGNode::PiNodeList = SmallVector<DDGNode *, 4> |
|
delete |
References llvm::List, N, and PiBlockDDGNode().
Referenced by getNodes(), operator=(), operator=(), PiBlockDDGNode(), PiBlockDDGNode(), and PiBlockDDGNode().
PiBlockDDGNode::PiBlockDDGNode | ( | const PiNodeList & | List | ) |
Definition at line 133 of file DDG.cpp.
References assert(), llvm::DDGNode::DDGNode(), llvm::List, and llvm::DDGNode::PiBlock.
PiBlockDDGNode::PiBlockDDGNode | ( | const PiBlockDDGNode & | N | ) |
Definition at line 138 of file DDG.cpp.
References assert(), llvm::DDGNode::DDGNode(), llvm::DDGNode::getKind(), N, llvm::DDGNode::PiBlock, and PiBlockDDGNode().
PiBlockDDGNode::PiBlockDDGNode | ( | PiBlockDDGNode && | N | ) |
Definition at line 144 of file DDG.cpp.
References assert(), llvm::DDGNode::DDGNode(), llvm::DDGNode::getKind(), llvm::move(), N, llvm::DDGNode::PiBlock, and PiBlockDDGNode().
Define classof to be able to use isa<>, cast<>, dyn_cast<>, etc.
Definition at line 200 of file DDG.h.
References llvm::DDGNode::DDGNode(), N, and llvm::DDGNode::PiBlock.
|
inline |
Definition at line 194 of file DDG.h.
References PiBlockDDGNode().
|
inline |
|
default |
References N, and PiBlockDDGNode().
|
inline |
Definition at line 183 of file DDG.h.
References N, llvm::DDGNode::operator=(), and PiBlockDDGNode().