![]() |
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.