16 size_t index) noexcept
25 if (
sink_ == new_sink)
39 bb->add_outedge(
sink);
48 return outedges_.size();
83 if ((*i)->source() != (*
inedges_.begin())->source())
105 if (edge.sink() !=
OutEdge(0)->sink())
117 if (edge.is_selfloop())
static BasicBlock * create(ControlFlowGraph &cfg)
size_t index() const noexcept
ControlFlowGraphEdge(ControlFlowGraphNode *source, ControlFlowGraphNode *sink, size_t index) noexcept
ControlFlowGraphNode * sink_
ControlFlowGraphNode * sink() const noexcept
ControlFlowGraphNode * source_
void divert(ControlFlowGraphNode *new_sink)
ControlFlowGraphNode * source() const noexcept
bool single_successor() const noexcept
bool single_predecessor() const noexcept
ControlFlowGraphEdge * OutEdge(size_t n) const
std::unordered_set< ControlFlowGraphEdge * > inedges_
bool has_selfloop_edge() const noexcept
size_t NumInEdges() const noexcept
virtual ~ControlFlowGraphNode() noexcept
bool no_predecessor() const noexcept
ControlFlowGraph & cfg() const noexcept
outedge_iterator_range OutEdges() const
void remove_outedge(size_t n)
bool no_successor() const noexcept
size_t NumOutEdges() const noexcept
Global memory state passed between functions.