Jlm
Public Member Functions | Protected Member Functions | Private Types | Private Attributes | List of all members
jlm::llvm::ControlFlowGraphNode Class Reference

#include <cfg-node.hpp>

Inheritance diagram for jlm::llvm::ControlFlowGraphNode:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::ControlFlowGraphNode:
Collaboration graph
[legend]

Public Member Functions

virtual ~ControlFlowGraphNode () noexcept
 
ControlFlowGraphcfg () const noexcept
 
size_t NumOutEdges () const noexcept
 
ControlFlowGraphEdgeOutEdge (size_t n) const
 
outedge_iterator_range OutEdges () const
 
ControlFlowGraphEdgeadd_outedge (ControlFlowGraphNode *sink)
 
void remove_outedge (size_t n)
 
void remove_outedges ()
 
size_t NumInEdges () const noexcept
 
inedge_iterator_range InEdges () const
 
void divert_inedges (llvm::ControlFlowGraphNode *new_successor)
 
void remove_inedges ()
 
bool no_predecessor () const noexcept
 
bool single_predecessor () const noexcept
 
bool no_successor () const noexcept
 
bool single_successor () const noexcept
 
bool is_branch () const noexcept
 
bool has_selfloop_edge () const noexcept
 

Protected Member Functions

 ControlFlowGraphNode (ControlFlowGraph &cfg)
 

Private Types

using inedge_iterator = util::PtrIterator< ControlFlowGraphEdge, std::unordered_set< ControlFlowGraphEdge * >::const_iterator >
 
using inedge_iterator_range = util::IteratorRange< inedge_iterator >
 
using outedge_iterator = util::PtrIterator< ControlFlowGraphEdge, std::vector< std::unique_ptr< ControlFlowGraphEdge > >::const_iterator >
 
using outedge_iterator_range = util::IteratorRange< outedge_iterator >
 

Private Attributes

ControlFlowGraphcfg_
 
std::vector< std::unique_ptr< ControlFlowGraphEdge > > outedges_
 
std::unordered_set< ControlFlowGraphEdge * > inedges_
 
friend ControlFlowGraphEdge
 

Detailed Description

Definition at line 85 of file cfg-node.hpp.

Member Typedef Documentation

◆ inedge_iterator

using jlm::llvm::ControlFlowGraphNode::inedge_iterator = util:: PtrIterator<ControlFlowGraphEdge, std::unordered_set<ControlFlowGraphEdge *>::const_iterator>
private

Definition at line 87 of file cfg-node.hpp.

◆ inedge_iterator_range

Definition at line 89 of file cfg-node.hpp.

◆ outedge_iterator

using jlm::llvm::ControlFlowGraphNode::outedge_iterator = util::PtrIterator< ControlFlowGraphEdge, std::vector<std::unique_ptr<ControlFlowGraphEdge> >::const_iterator>
private

Definition at line 91 of file cfg-node.hpp.

◆ outedge_iterator_range

Definition at line 94 of file cfg-node.hpp.

Constructor & Destructor Documentation

◆ ~ControlFlowGraphNode()

jlm::llvm::ControlFlowGraphNode::~ControlFlowGraphNode ( )
virtualdefaultnoexcept

◆ ControlFlowGraphNode()

jlm::llvm::ControlFlowGraphNode::ControlFlowGraphNode ( ControlFlowGraph cfg)
inlineexplicitprotected

Definition at line 100 of file cfg-node.hpp.

Member Function Documentation

◆ add_outedge()

ControlFlowGraphEdge* jlm::llvm::ControlFlowGraphNode::add_outedge ( ControlFlowGraphNode sink)
inline

Definition at line 130 of file cfg-node.hpp.

◆ cfg()

ControlFlowGraph& jlm::llvm::ControlFlowGraphNode::cfg ( ) const
inlinenoexcept

Definition at line 106 of file cfg-node.hpp.

◆ divert_inedges()

void jlm::llvm::ControlFlowGraphNode::divert_inedges ( llvm::ControlFlowGraphNode new_successor)
inline

Definition at line 171 of file cfg-node.hpp.

◆ has_selfloop_edge()

bool jlm::llvm::ControlFlowGraphNode::has_selfloop_edge ( ) const
noexcept

Definition at line 113 of file cfg-node.cpp.

◆ InEdges()

inedge_iterator_range jlm::llvm::ControlFlowGraphNode::InEdges ( ) const
inline

Definition at line 163 of file cfg-node.hpp.

◆ is_branch()

bool jlm::llvm::ControlFlowGraphNode::is_branch ( ) const
inlinenoexcept

Definition at line 196 of file cfg-node.hpp.

◆ no_predecessor()

bool jlm::llvm::ControlFlowGraphNode::no_predecessor ( ) const
noexcept

Definition at line 69 of file cfg-node.cpp.

◆ no_successor()

bool jlm::llvm::ControlFlowGraphNode::no_successor ( ) const
noexcept

Definition at line 91 of file cfg-node.cpp.

◆ NumInEdges()

size_t jlm::llvm::ControlFlowGraphNode::NumInEdges ( ) const
noexcept

Definition at line 63 of file cfg-node.cpp.

◆ NumOutEdges()

size_t jlm::llvm::ControlFlowGraphNode::NumOutEdges ( ) const
noexcept

Definition at line 46 of file cfg-node.cpp.

◆ OutEdge()

ControlFlowGraphEdge* jlm::llvm::ControlFlowGraphNode::OutEdge ( size_t  n) const
inline

Definition at line 115 of file cfg-node.hpp.

◆ OutEdges()

outedge_iterator_range jlm::llvm::ControlFlowGraphNode::OutEdges ( ) const
inline

Definition at line 122 of file cfg-node.hpp.

◆ remove_inedges()

void jlm::llvm::ControlFlowGraphNode::remove_inedges ( )

Definition at line 52 of file cfg-node.cpp.

◆ remove_outedge()

void jlm::llvm::ControlFlowGraphNode::remove_outedge ( size_t  n)
inline

Definition at line 138 of file cfg-node.hpp.

◆ remove_outedges()

void jlm::llvm::ControlFlowGraphNode::remove_outedges ( )
inline

Definition at line 153 of file cfg-node.hpp.

◆ single_predecessor()

bool jlm::llvm::ControlFlowGraphNode::single_predecessor ( ) const
noexcept

Definition at line 75 of file cfg-node.cpp.

◆ single_successor()

bool jlm::llvm::ControlFlowGraphNode::single_successor ( ) const
noexcept

Definition at line 97 of file cfg-node.cpp.

Member Data Documentation

◆ cfg_

ControlFlowGraph& jlm::llvm::ControlFlowGraphNode::cfg_
private

Definition at line 205 of file cfg-node.hpp.

◆ ControlFlowGraphEdge

friend jlm::llvm::ControlFlowGraphNode::ControlFlowGraphEdge
private

Definition at line 209 of file cfg-node.hpp.

◆ inedges_

std::unordered_set<ControlFlowGraphEdge *> jlm::llvm::ControlFlowGraphNode::inedges_
private

Definition at line 207 of file cfg-node.hpp.

◆ outedges_

std::vector<std::unique_ptr<ControlFlowGraphEdge> > jlm::llvm::ControlFlowGraphNode::outedges_
private

Definition at line 206 of file cfg-node.hpp.


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