P4C
The P4 Compiler
|
#include <controlFlowGraph.h>
Classes | |
class | DummyNode |
class | Edge |
A CFG Edge; can be an in-edge or out-edge. More... | |
class | EdgeSet |
class | IfNode |
class | Node |
class | TableNode |
Public Member Functions | |
void | build (const IR::P4Control *cc, P4::ReferenceMap *refMap, P4::TypeMap *typeMap) |
bool | checkImplementable () const |
void | computeSuccessors () |
void | dbprint (std::ostream &out) const |
void | dbprint (std::ostream &out, Node *node, std::set< Node * > &done) const |
Node * | makeNode (const IR::IfStatement *statement) |
Node * | makeNode (const IR::P4Table *table, const IR::Expression *invocation) |
Node * | makeNode (cstring name) |
void | setEntry (Node *entry) |
Public Member Functions inherited from P4::IHasDbPrint | |
void | print () const |
Public Attributes | |
ordered_set< Node * > | allNodes |
const IR::P4Control * | container |
Node * | entryPoint |
Node * | exitPoint |
Protected Types | |
enum class | EdgeType { Unconditional , True , False , Label } |
This CFG models the BMV2 notion of control-flow graph. In BMv2 there are only 2 types of nodes: If and Table.
bool P4::BMV2::CFG::checkImplementable | ( | ) | const |
BMv2 is very restricted in the kinds of graphs it supports. Thie method checks whether a CFG is implementable.
|
virtual |
Implements P4::IHasDbPrint.