P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
P4::DoSynthesizeActions Class Reference
Inheritance diagram for P4::DoSynthesizeActions:

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)
 

Detailed Description

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.