#include <CFG.hpp>


Classes | |
| class | NodeLabel |
| class | NodeLabelListIterator |
Public Types | |
| typedef std::list< NodeLabel > | NodeLabelList |
Public Member Functions | |
| CFG () | |
| ~CFG () | |
| Constructs an empty standard CFGStandard. | |
| OA_ptr< NodeInterface > | getEntry () const |
| get ptr to unique entry node | |
| OA_ptr< NodeInterface > | getExit () const |
| SymHandle | getName () const |
| void | dump (std::ostream &, OA_ptr< IRHandlesIRInterface >) |
| void | dumpdot (std::ostream &os, OA_ptr< IRHandlesIRInterface > ir) |
| OA_ptr< NodesIteratorInterface > | getCFGNodesIterator () const |
| OA_ptr< EdgesIteratorInterface > | getCFGEdgesIterator () const |
| OA_ptr< NodesIteratorInterface > | getCFGEntryNodesIterator () const |
| OA_ptr< NodesIteratorInterface > | getCFGExitNodesIterator () const |
| OA_ptr< NodesIteratorInterface > | getCFGReversePostDFSIterator (DGraph::DGraphEdgeDirection pOrient) |
| OA_ptr< NodesIteratorInterface > | getCFGDFSIterator (OA_ptr< NodeInterface > n) |
| void | setEntry (OA_ptr< Node > n) |
| void | setExit (OA_ptr< Node > n) |
| OA_ptr< Node > | splitBlock (OA_ptr< Node >, StmtHandle) |
| Split the basic block 'block' at the given split point and return the new basic block. | |
| OA_ptr< Edge > | connect (OA_ptr< NodeInterface > src, OA_ptr< NodeInterface > dst, EdgeType type) |
| OA_ptr< Edge > | connect (OA_ptr< NodeInterface > src, OA_ptr< NodeInterface > dst, EdgeType type, ExprHandle expr) |
| void | connect (OA_ptr< NodeInterface >, NodeLabelList &) |
| Connect the src to each of the nodes in dst_list. | |
| void | connect (NodeLabelList &, OA_ptr< NodeInterface >) |
| Connect each node in src_list to dst. | |
| void | disconnect (OA_ptr< EdgeInterface > e) |
| void | disconnect (OA_ptr< NodeInterface > n) |
| OA_ptr< Node > | node_from_label (OA::StmtLabel) |
| Given a label, determine whether it has been encountered already. If so, return its associated block (obtained from the mlabel_to_node_map). If not, create a new block and update the mlabel_to_node_map. | |
| OA_ptr< Node > | getLabelBlock (StmtLabel lab) |
| Edge constructor. | |
| void | mapLabelToNode (OA::StmtLabel lab, OA_ptr< Node > n) |
| associate given label with given node | |
| bool | isLabelMappedToNode (StmtLabel lab) |
| determine if the given label is currently mapped to a node | |
Private Attributes | |
| SymHandle | mName |
| OA_ptr< Node > | mEntry |
| OA_ptr< Node > | mExit |
| std::map< OA::StmtLabel, OA_ptr< Node > > | mlabel_to_node_map |
Friends | |
| class | NodeLabelListIterator |
Definition at line 349 of file CFG.hpp.
| typedef std::list<NodeLabel> OA::CFG::CFG::NodeLabelList |
| OA::CFG::CFG::~CFG | ( | ) |
| OA_ptr< Edge > OA::CFG::CFG::connect | ( | OA_ptr< NodeInterface > | src, | |
| OA_ptr< NodeInterface > | dst, | |||
| EdgeType | type | |||
| ) |
Definition at line 537 of file CFG.cpp.
References OA::DGraph::DGraphImplement::addEdge().

| OA_ptr< Edge > OA::CFG::CFG::connect | ( | OA_ptr< NodeInterface > | src, | |
| OA_ptr< NodeInterface > | dst, | |||
| EdgeType | type, | |||
| ExprHandle | expr | |||
| ) |
| void OA::CFG::CFG::connect | ( | OA_ptr< NodeInterface > | src, | |
| CFG::NodeLabelList & | dst_list | |||
| ) |
| void OA::CFG::CFG::connect | ( | CFG::NodeLabelList & | src_list, | |
| OA_ptr< NodeInterface > | dst | |||
| ) |
| void OA::CFG::CFG::disconnect | ( | OA_ptr< EdgeInterface > | e | ) |
| void OA::CFG::CFG::disconnect | ( | OA_ptr< NodeInterface > | n | ) |
| void OA::CFG::CFG::dump | ( | std::ostream & | , | |
| OA_ptr< IRHandlesIRInterface > | ||||
| ) |
| void OA::CFG::CFG::dumpdot | ( | std::ostream & | os, | |
| OA_ptr< IRHandlesIRInterface > | ir | |||
| ) |
| OA_ptr< NodesIteratorInterface > OA::CFG::CFG::getCFGDFSIterator | ( | OA_ptr< NodeInterface > | n | ) |
Definition at line 499 of file CFG.cpp.
References OA::DGraph::DGraphImplement::getDFSIterator().

| OA_ptr< EdgesIteratorInterface > OA::CFG::CFG::getCFGEdgesIterator | ( | ) | const |
Definition at line 468 of file CFG.cpp.
References OA::DGraph::DGraphImplement::getEdgesIterator().

| OA_ptr< NodesIteratorInterface > OA::CFG::CFG::getCFGEntryNodesIterator | ( | ) | const |
Definition at line 476 of file CFG.cpp.
References OA::DGraph::DGraphImplement::getEntryNodesIterator().

| OA_ptr< NodesIteratorInterface > OA::CFG::CFG::getCFGExitNodesIterator | ( | ) | const |
| OA_ptr< NodesIteratorInterface > OA::CFG::CFG::getCFGNodesIterator | ( | ) | const |
DGraph Iterators
CFG Specific Iterators
Definition at line 460 of file CFG.cpp.
References OA::DGraph::DGraphImplement::getNodesIterator().

| OA_ptr< NodesIteratorInterface > OA::CFG::CFG::getCFGReversePostDFSIterator | ( | DGraph::DGraphEdgeDirection | pOrient | ) |
Definition at line 491 of file CFG.cpp.
References OA::DGraph::DGraphImplement::getReversePostDFSIterator().

| OA_ptr< NodeInterface > OA::CFG::CFG::getEntry | ( | ) | const |
| OA_ptr< NodeInterface > OA::CFG::CFG::getExit | ( | ) | const |
| OA_ptr< Node > OA::CFG::CFG::getLabelBlock | ( | OA::StmtLabel | lab | ) |
| bool OA::CFG::CFG::isLabelMappedToNode | ( | StmtLabel | lab | ) |
determine if the given label is currently mapped to a node
Definition at line 574 of file CFG.cpp.
References mlabel_to_node_map.
| void OA::CFG::CFG::mapLabelToNode | ( | OA::StmtLabel | lab, | |
| OA_ptr< Node > | n | |||
| ) |
| OA_ptr< Node > OA::CFG::CFG::node_from_label | ( | OA::StmtLabel | lab | ) |
| OA_ptr< Node > OA::CFG::CFG::splitBlock | ( | OA_ptr< Node > | block, | |
| StmtHandle | splitPoint | |||
| ) |
Split the basic block 'block' at the given split point and return the new basic block.
| splitPoint | The first statement in the new basic block. |
After the operation is done, the new block contains all the outgoing edges from 'block'; in other words, 'block' will have *no* outgoing edges.
friend class NodeLabelListIterator [friend] |
OA_ptr<Node> OA::CFG::CFG::mEntry [private] |
Definition at line 495 of file CFG.hpp.
Referenced by getEntry(), setEntry(), and ~CFG().
OA_ptr<Node> OA::CFG::CFG::mExit [private] |
std::map<OA::StmtLabel, OA_ptr<Node> > OA::CFG::CFG::mlabel_to_node_map [private] |
Definition at line 497 of file CFG.hpp.
Referenced by isLabelMappedToNode(), and ~CFG().
SymHandle OA::CFG::CFG::mName [private] |
1.7.1