
Public Member Functions | |
| DoSynthesizeActions (ReferenceMap *refMap, TypeMap *typeMap, ActionSynthesisPolicy *policy) | |
| bool | mustMove (const IR::AssignmentStatement *statement) |
| bool | mustMove (const IR::MethodCallStatement *statement) |
| const IR::Node * | postorder (IR::P4Control *control) override |
| const IR::Node * | preorder (IR::AssignmentStatement *statement) override |
| const IR::Node * | preorder (IR::BlockStatement *statement) override |
| const IR::Node * | preorder (IR::ExitStatement *statement) override |
| const IR::Node * | preorder (IR::Function *function) override |
| const IR::Node * | preorder (IR::MethodCallStatement *statement) override |
| const IR::Node * | preorder (IR::P4Action *action) override |
| const IR::Node * | preorder (IR::P4Control *control) override |
| const IR::Node * | preorder (IR::P4Parser *parser) override |
Protected Member Functions | |
| const IR::Statement * | createAction (const IR::Statement *body) |
Convert some statements into action invocations by synthesizing new actions. E.g.
control c(inout bit x) { apply { x = 1; } }
is converted to:
control c(inout bit x) { action act() { x = 1; } apply { act(); } }
For this to work all variable declarations must have been moved to the beginning.