|
|
| DoRemoveReturns (P4::ReferenceMap *refMap, cstring varName="hasReturned", cstring retValName="retval") |
| |
|
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::IfStatement *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 |
| |
|
const IR::Node * | preorder (IR::ReturnStatement *statement) override |
| |
|
const IR::Node * | preorder (IR::SwitchStatement *statement) override |
| |
This visitor replaces 'returns' by ifs: e.g. control c(inout bit x) { apply { if (x) return; x = !x; }} becomes: control c(inout bit x) { bool hasReturned; apply { hasReturned = false; if (x) hasReturned = true; if (!hasReturned) x = !x; }}