
Public Member Functions | |
| KeySideEffect (ReferenceMap *refMap, TypeMap *typeMap, std::set< const IR::P4Table * > *invokedInKey) | |
| virtual const IR::Node * | doStatement (const IR::Statement *statement, const IR::Expression *expression) |
| const IR::Node * | postorder (IR::AssignmentStatement *statement) override |
| const IR::Node * | postorder (IR::IfStatement *statement) override |
| const IR::Node * | postorder (IR::KeyElement *element) override |
| const IR::Node * | postorder (IR::MethodCallStatement *statement) override |
| const IR::Node * | postorder (IR::P4Table *table) override |
| const IR::Node * | postorder (IR::SwitchStatement *statement) override |
| const IR::Node * | preorder (IR::Key *key) override |
| const IR::Node * | preorder (IR::P4Table *table) override |
Protected Attributes | |
| std::set< const IR::P4Table * > * | invokedInKey |
| ReferenceMap * | refMap |
| std::map< const IR::P4Table *, TableInsertions * > | toInsert |
| TypeMap * | typeMap |
This pass is an adaptation of the midend code SimplifyKey. If a key computation involves side effects then all key field computations are lifted prior to the table application. We need to lift all key field computations since the order of side-effects needs to be preserved.
is transformed to